0.8.0 • Published 10 months ago

@rxstack/express-server v0.8.0

Weekly downloads
3
License
MIT
Repository
github
Last release
10 months ago

RxStack ExpressServer Module

The ExpressServer module integrates expressjs in rxstack framework.

Installation

npm install @rxstack/express-server --save

Documentation

Setup

ExpressServer module needs to be registered in the application. Let's create the application:

import {Application, ApplicationOptions} from '@rxstack/core';
import {ExpressModule} from '@rxstack/express-server';

export const EXPRESS_APP_OPTIONS: ApplicationOptions = {
  imports: [
    ExpressModule.configure({
      'host': 'localhost',
      'port': 3000,
      'prefix': '/api'
    })
  ],
  servers: ['express'], //enables the server
  providers: [
    // ...
  ]
};

new Application(EXPRESS_APP_OPTIONS).start();

Module Options

The module accepts the following options:

  • host: the server host, ex: 127.0.0.1 or 0.0.0.0 (for docker). By default is set to localhost
  • port: the server port. By default is set to 3000
  • prefix: the prefix for each route, ex: '/api/products. By default is set to null

Express Options

In order to configure expressjs application you need to listen to ServerEvents.CONFIGURE.

import {ServerEvents, ServerConfigurationEvent, InjectorAwareInterface} from '@rxstack/core';
import {ExpressServer} from '@rxstack/express-server';
import {Observe} from '@rxstack/async-event-dispatcher';
import {Injectable, Injector} from 'injection-js';
import {Application} from 'express';

@Injectable()
export class ConfigurationListener implements InjectorAwareInterface {

  private injector: Injector;

  setInjector(injector: Injector): void {
    this.injector = injector;
  }
  
  @Observe(ServerEvents.CONFIGURE)
  async onConfigure(event: ServerConfigurationEvent): Promise<void> {
    if (event.server.getName() !== ExpressServer.serverName) {
      return;
    }

    const app: Application = event.server.getEngine();
    
    // register any express middleware
  }
}

Express Middleware

In addition to rxstack controllers you can register express middleware to you application.

Important: If response is sent then native express middleware will bypass kernel.

import {
  Request as ExpressRequest, Response as ExpressResponse,
  NextFunction, RequestHandler
} from 'express';
import {Injector} from 'injection-js';

export function myCustomExpressMiddleware(injector: Injector): RequestHandler {
  return (request: ExpressRequest, response: ExpressResponse, next: NextFunction): void => {
    response.json({'id': 'express'});
  };
}

You need to register myCustomExpressMiddleware in the express application by using ConfigurationListener.

/// ... 

const app: Application;
app.get('/my-custom-express-middleware', expressMiddleware(this.injector));

You need to register the listener in the application providers

You can get any of the registered services from injector.

License

Licensed under the MIT license.

0.8.0

10 months ago

0.7.2

3 years ago

0.7.1

3 years ago

0.7.0

4 years ago

0.6.0

6 years ago

0.5.0

6 years ago

0.4.0

6 years ago

0.3.0

6 years ago

0.2.0

6 years ago

0.1.0

7 years ago

0.0.42

7 years ago

0.0.41

7 years ago

0.0.40

7 years ago

0.0.378

7 years ago

0.0.37

7 years ago

0.0.36

7 years ago

0.0.35

7 years ago

0.0.34

7 years ago

0.0.33

7 years ago

0.0.32

7 years ago

0.0.31

7 years ago

0.0.30

7 years ago

0.0.29

7 years ago

0.0.28

7 years ago

0.0.27

8 years ago

0.0.26

8 years ago

0.0.25

8 years ago

0.0.24

8 years ago

0.0.23

8 years ago

0.0.21

8 years ago

0.0.19

8 years ago

0.0.18

8 years ago

0.0.17

8 years ago

0.0.16

8 years ago

0.0.15

8 years ago

0.0.14

8 years ago

0.0.13

8 years ago

0.0.1

8 years ago