0.7.2 • Published 2 years ago

@rxstack/express-server v0.7.2

Weekly downloads
3
License
MIT
Repository
github
Last release
2 years 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.7.2

2 years ago

0.7.1

2 years ago

0.7.0

3 years ago

0.6.0

4 years ago

0.5.0

4 years ago

0.4.0

5 years ago

0.3.0

5 years ago

0.2.0

5 years ago

0.1.0

6 years ago

0.0.42

6 years ago

0.0.41

6 years ago

0.0.40

6 years ago

0.0.378

6 years ago

0.0.37

6 years ago

0.0.36

6 years ago

0.0.35

6 years ago

0.0.34

6 years ago

0.0.33

6 years ago

0.0.32

6 years ago

0.0.31

6 years ago

0.0.30

6 years ago

0.0.29

6 years ago

0.0.28

6 years ago

0.0.27

6 years ago

0.0.26

6 years ago

0.0.25

6 years ago

0.0.24

6 years ago

0.0.23

6 years ago

0.0.21

6 years ago

0.0.19

6 years ago

0.0.18

6 years ago

0.0.17

6 years ago

0.0.16

6 years ago

0.0.15

6 years ago

0.0.14

6 years ago

0.0.13

6 years ago

0.0.1

6 years ago