Class: application = new Application()

Properties
Name Type Description
handleHttp Function

Handle incoming HTTP(S) request by invoking the corresponding Controller method via the configured Sequence.

options ApplicationOptions

constructor(options: ApplicationOptions) : Application

Arguments
Name Type Description
options ApplicationOptions

component(component: Constructor) : void

Add a component to this application.

Arguments
Name Type Description
component Constructor

The component to add.


export class ProductComponent {
  controllers = [ProductController];
  repositories = [ProductRepo, UserRepo];
  providers = {
    [AUTHENTICATION_STRATEGY]: AuthStrategy,
    [AUTHORIZATION_ROLE]: Role,
  };
};

app.component(ProductComponent);

controller(controllerCtor: Constructor) : Binding

Register a controller class with this application.

Returns:

The newly created binding, you can use the reference to further modify the binding, e.g. lock the value to prevent further modifications.

```ts

Arguments
Name Type Description
controllerCtor Constructor

The controller class (constructor function).

handler(handlerFn: SequenceFunction) : void

Configure a custom sequence function for handling incoming requests.

app.handler((sequence, request, response) => {
  sequence.send(response, 'hello world'));
});

Arguments
Name Type Description
handlerFn SequenceFunction

The handler to invoke for each incoming request.

route(route: Route) : Binding

Register a new route.

function greet(name: string) {
 return `hello ${name}`;
}
const route = new Route('get', '/', operationSpec, greet);
app.route(route);

Arguments
Name Type Description
route Route

The route to add.

sequence(value: Constructor) : void

Configure a custom sequence class for handling incoming requests.

class MySequence implements SequenceHandler {
  constructor(
    @inject('send) public send: Send)) {
  }

  public async handle(request: ParsedRequest, response: ServerResponse) {
    send(response, 'hello world');
  }
}

Arguments
Name Type Description
value Constructor

The sequence to invoke for each incoming request.

Interface: ApplicationOptions

Properties
Name Type Description
components Array
sequence Constructor

Interface: Component

Properties
Name Type Description
controllers
providers Function

mountComponent(app: Application, component: Component) : void

Arguments
Name Type Description
app Application
component Component

Class: httphandler = new HttpHandler()

Properties
Name Type Description
handleRequest Function

constructor(_rootContext: Context) : HttpHandler

Arguments
Name Type Description
_rootContext Context

registerController(name: string, spec: OpenApiSpec) : void

Arguments
Name Type Description
name string
spec OpenApiSpec

registerRoute(route: Route) : void

Arguments
Name Type Description
route Route

Interface: ParsedRequest

Properties
Name Type Description
method string
path string
pathname string
query Function
url string

BindElement(key: string): Binding

Arguments
Name Type Description
key string

FindRoute(request: ParsedRequest): ResolvedRoute

Find a route matching the incoming request. Throw an error when no route was found.

Arguments
Name Type Description
request ParsedRequest

GetFromContext(key: string): Promise<BoundValue>

Arguments
Name Type Description
key string

InvokeMethod(route: RouteEntry, args: OperationArgs): Promise<OperationRetval>

Invokes a method defined in the Application Controller

Returns:

OperationRetval Result from method invocation

Arguments
Name Type Description
route RouteEntry

args OperationArgs

Operation arguments for the method

LogError(err: Error, statusCode: number, request: ServerRequest): void

Log information about a failed request.

Returns:

Arguments
Name Type Description
err Error

The error reported by request handling code.

statusCode number

Status code of the HTTP response

request ServerRequest

The request that failed.

OperationArgs = any[]

OperationRetval = any

PathParameterValues(key: string): any

Arguments
Name Type Description
key string

Reject(response: ServerResponse, request: ServerRequest, err: Error): void

Reject the request with an error.

Returns:

Arguments
Name Type Description
response ServerResponse

The response the response to send to.

request ServerRequest

The request that triggered the error.

err Error

The error.

Send(response: ServerResponse, result: OperationRetval): void

Send the operation response back to the client.

Returns:

Arguments
Name Type Description
response ServerResponse

The response the response to send to.

result OperationRetval

The operation result to send.

HttpError = HttpErrors.HttpError

jsonBodyFn(req: ServerRequest, cb: (err: Error, body: __type) => void): void

Arguments
Name Type Description
req ServerRequest
cb Function

parseOperationArgs(request: ParsedRequest, route: RouteEntry, pathParams: PathParameterValues) : Promise

Parses the request to derive arguments to be passed in for the Application controller method

Arguments
Name Type Description
request ParsedRequest

Incoming HTTP request

route RouteEntry
pathParams PathParameterValues

Path parameters in incoming HTTP request

promisify(func: (callback: (err: any, result: T) => void) => void) :

Arguments
Name Type Description
func Function

api(spec: OpenApiSpec) : (Anonymous function)

Decorate the given Controller constructor with metadata describing the HTTP/REST API the Controller implements/provides.

Arguments
Name Type Description
spec OpenApiSpec

OpenAPI specification describing the endpoints handled by this controller

getApiSpec(constructor: Function) : OpenApiSpec

Arguments
Name Type Description
constructor Function

Class: controllerroute = new ControllerRoute()

constructor(verb: string, path: string, spec: OperationObject, _controllerName: string) : ControllerRoute

Arguments
Name Type Description
verb string
path string
spec OperationObject
_controllerName string

describe() : string

invokeHandler(requestContext: Context, args: OperationArgs) : Promise

Arguments
Name Type Description
requestContext Context
args OperationArgs

updateBindings(requestContext: Context) : void

Arguments
Name Type Description
requestContext Context

Class: route = new Route()

Properties
Name Type Description
spec OperationObject

constructor(verb: string, path: string, spec: OperationObject, _handler: Function) : Route

Arguments
Name Type Description
verb string
path string
spec OperationObject
_handler Function

describe() : string

invokeHandler(requestContext: Context, args: OperationArgs) : Promise

Arguments
Name Type Description
requestContext Context
args OperationArgs

updateBindings(requestContext: Context) : void

Arguments
Name Type Description
requestContext Context

Class: routeentry = new RouteEntry()

Properties
Name Type Description
path string
spec OperationObject
verb string

constructor(verb: string, path: string, spec: OperationObject) : RouteEntry

Arguments
Name Type Description
verb string
path string
spec OperationObject

describe() : string

invokeHandler(requestContext: Context, args: OperationArgs) : Promise

Arguments
Name Type Description
requestContext Context
args OperationArgs

match(request: ParsedRequest) : ResolvedRoute | undefined

Arguments
Name Type Description
request ParsedRequest

updateBindings(requestContext: Context) : void

Arguments
Name Type Description
requestContext Context

Class: routingtable = new RoutingTable()

find(request: ParsedRequest) : ResolvedRoute

Arguments
Name Type Description
request ParsedRequest

registerController(controller: string, spec: OpenApiSpec) : void

Arguments
Name Type Description
controller string
spec OpenApiSpec

registerRoute(route: Route) : void

Arguments
Name Type Description
route Route

Interface: ResolvedRoute

Properties
Name Type Description
pathParams PathParameterValues
route RouteEntry

parseRequestUrl(request: ServerRequest) : ParsedRequest

Parse the URL of the incoming request and set additional properties on this request object:

  • path
  • query

Arguments
Name Type Description
request ServerRequest

Class: defaultsequence = new DefaultSequence()

The default implementation of SequenceHandler.

This class implements default Sequence for the LoopBack framework. Default sequence is used if user hasn't defined their own Sequence for their application.

Sequence constructor() and run() methods are invoked from [[http-handler]] when the API request comes in. User defines APIs in their Application Controller class.

User can bind their own Sequence to app as shown below

app.bind('sequence').toClass(MySequence);

Properties
Name Type Description
reject Reject

The default implementation of SequenceHandler.

This class implements default Sequence for the LoopBack framework. Default sequence is used if user hasn't defined their own Sequence for their application.

Sequence constructor() and run() methods are invoked from [[http-handler]] when the API request comes in. User defines APIs in their Application Controller class.

User can bind their own Sequence to app as shown below

app.bind('sequence').toClass(MySequence);

send Send

The default implementation of SequenceHandler.

This class implements default Sequence for the LoopBack framework. Default sequence is used if user hasn't defined their own Sequence for their application.

Sequence constructor() and run() methods are invoked from [[http-handler]] when the API request comes in. User defines APIs in their Application Controller class.

User can bind their own Sequence to app as shown below

app.bind('sequence').toClass(MySequence);

constructor(findRoute: FindRoute, invoke: InvokeMethod, send: Send, reject: Reject) : DefaultSequence

Constructor: Injects findRoute, invokeMethod & logError methods as promises.

Arguments
Name Type Description
findRoute FindRoute

Finds the appropriate controller method, spec and args for invocation

invoke InvokeMethod

Invokes the method

send Send

Constructor: Injects findRoute, invokeMethod & logError methods as promises.

reject Reject

Constructor: Injects findRoute, invokeMethod & logError methods as promises.

handle(req: ParsedRequest, res: ServerResponse) : Promise

Runs the default sequence. Given a request and response, running the sequence will produce a response or an error.

Default sequence executes these steps

  • Finds the appropriate controller method, swagger spec and args for invocation
  • Parses HTTP request to get API argument list
  • Invokes the API which is defined in the Application Controller
  • Writes the result from API into the HTTP response
  • Error is caught and logged using 'logError' if any of the above steps in the sequence fails with an error.

Arguments
Name Type Description
req ParsedRequest

Parsed incoming HTTP request

res ServerResponse

HTTP server response with result from Application controller method invocation

Interface: SequenceHandler

A sequence handler is a class implementing sequence of actions required to handle an incoming request.

handle(request: ParsedRequest, response: ServerResponse) : Promise

Handle the request by running the configured sequence of actions.

Arguments
Name Type Description
request ParsedRequest

The incoming HTTP request

response ServerResponse

The HTTP server response where to write the result

SequenceFunction(sequence: DefaultSequence, request: ParsedRequest, response: ServerResponse):

A sequence function is a function implementing a custom sequence of actions to handle an incoming request.

Arguments
Name Type Description
sequence DefaultSequence
request ParsedRequest
response ServerResponse

Class: server = new Server()

Properties
Name Type Description
app Application
config ServerConfig
state ServerState

constructor(app: Application, config: ServerConfig) : Server

Arguments
Name Type Description
app Application
config ServerConfig

start() : Promise

Interface: ServerConfig

Properties
Name Type Description
port number

writeResultToResponse(response: Response, result: OperationRetval) : void

Writes the result from Application controller method into the HTTP response

Arguments
Name Type Description
response Response

HTTP Response

result OperationRetval

Result from the API to write into HTTP Response