@loopback/docs
Version:
Documentation files rendered at [https://loopback.io](https://loopback.io)
1,320 lines (601 loc) • 20.6 kB
Markdown
---
lang: en
title: 'API docs: rest'
keywords: LoopBack 4.0, LoopBack 4, Node.js, TypeScript, OpenAPI
sidebar: lb4_sidebar
editurl: https://github.com/loopbackio/loopback-next/tree/master/packages/rest
permalink: /doc/en/lb4/apidocs.rest.html
---
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) > [@loopback/rest](./rest.md)
## rest package
The REST API package for loopback-next.
## Remarks
A REST server for LoopBack 4 application instances, complete with:
- new custom routing engine (special thanks to @<!-- -->bajtos)! - tools for defining your application routes - OpenAPI 3.0 spec (openapi.json/openapi.yaml) generation using @<!-- -->loopback/openapi-v3 - a default sequence implementation to manage the request and response lifecycle
## Classes
<table><thead><tr><th>
Class
</th><th>
Description
</th></tr></thead>
<tbody><tr><td markdown="1">
[ControllerRoute](./rest.controllerroute.md)
</td><td markdown="1">
A route backed by a controller
</td></tr>
<tr><td markdown="1">
[DefaultSequence](./rest.defaultsequence.md)
</td><td markdown="1">
The default implementation of SequenceHandler.
</td></tr>
<tr><td markdown="1">
[FindRouteMiddlewareProvider](./rest.findroutemiddlewareprovider.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[FindRouteProvider](./rest.findrouteprovider.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[HttpHandler](./rest.httphandler.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[InfoSpecEnhancer](./rest.infospecenhancer.md)
</td><td markdown="1">
An OpenAPI spec enhancer to populate `info` with application metadata (package.json).
</td></tr>
<tr><td markdown="1">
[InvokeMethodMiddlewareProvider](./rest.invokemethodmiddlewareprovider.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[InvokeMethodProvider](./rest.invokemethodprovider.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[JsonBodyParser](./rest.jsonbodyparser.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[LogErrorProvider](./rest.logerrorprovider.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[MiddlewareSequence](./rest.middlewaresequence.md)
</td><td markdown="1">
A sequence implementation using middleware chains
</td></tr>
<tr><td markdown="1">
[ParseParamsMiddlewareProvider](./rest.parseparamsmiddlewareprovider.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[ParseParamsProvider](./rest.parseparamsprovider.md)
</td><td markdown="1">
Provides the function for parsing args in requests at runtime.
</td></tr>
<tr><td markdown="1">
[RawBodyParser](./rest.rawbodyparser.md)
</td><td markdown="1">
Parsing the request body into Buffer
</td></tr>
<tr><td markdown="1">
[RedirectRoute](./rest.redirectroute.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[RegExpRouter](./rest.regexprouter.md)
</td><td markdown="1">
Router implementation based on regexp matching
</td></tr>
<tr><td markdown="1">
[RejectProvider](./rest.rejectprovider.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[RequestBodyParser](./rest.requestbodyparser.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[RequestContext](./rest.requestcontext.md)
</td><td markdown="1">
A per-request Context combining an IoC container with handler context (request, response, etc.).
</td></tr>
<tr><td markdown="1">
[RestApplication](./rest.restapplication.md)
</td><td markdown="1">
An implementation of the Application class that automatically provides an instance of a REST server. This application class is intended to be a single-server implementation. Any attempt to bind additional servers will throw an error.
</td></tr>
<tr><td markdown="1">
[RestComponent](./rest.restcomponent.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[RestServer](./rest.restserver.md)
</td><td markdown="1">
A REST API server for use with Loopback. Add this server to your application by importing the RestComponent.
</td></tr>
<tr><td markdown="1">
[Route](./rest.route.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[RouteSource](./rest.routesource.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[RoutingTable](./rest.routingtable.md)
</td><td markdown="1">
Routing table
</td></tr>
<tr><td markdown="1">
[SendProvider](./rest.sendprovider.md)
</td><td markdown="1">
Provides the function that populates the response object with the results of the operation.
</td></tr>
<tr><td markdown="1">
[SendResponseMiddlewareProvider](./rest.sendresponsemiddlewareprovider.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[StreamBodyParser](./rest.streambodyparser.md)
</td><td markdown="1">
A special body parser to retain request stream as is. It will be used by explicitly setting `x-parser` to `'stream'` in the request body spec.
</td></tr>
<tr><td markdown="1">
[TextBodyParser](./rest.textbodyparser.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[Trie](./rest.trie.md)
</td><td markdown="1">
An implementation of trie for routes. The key hierarchy is built with parts of the route path delimited by `/`
</td></tr>
<tr><td markdown="1">
[TrieRouter](./rest.trierouter.md)
</td><td markdown="1">
Router implementation based on trie
</td></tr>
<tr><td markdown="1">
[UrlEncodedBodyParser](./rest.urlencodedbodyparser.md)
</td><td markdown="1">
</td></tr>
</tbody></table>
## Abstract Classes
<table><thead><tr><th>
Abstract Class
</th><th>
Description
</th></tr></thead>
<tbody><tr><td markdown="1">
[BaseRoute](./rest.baseroute.md)
</td><td markdown="1">
Base implementation of RouteEntry
</td></tr>
</tbody></table>
## Functions
<table><thead><tr><th>
Function
</th><th>
Description
</th></tr></thead>
<tbody><tr><td markdown="1">
[assignRouterSpec(target, additions)](./rest.assignrouterspec.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[compareRoute(route1, route2)](./rest.compareroute.md)
</td><td markdown="1">
Compare two routes by verb/path for sorting
</td></tr>
<tr><td markdown="1">
[createBodyParserBinding(parserClass, key)](./rest.createbodyparserbinding.md)
</td><td markdown="1">
Create a binding for the given body parser class
</td></tr>
<tr><td markdown="1">
[createControllerFactoryForBinding(key)](./rest.createcontrollerfactoryforbinding.md)
</td><td markdown="1">
Create a controller factory function for a given binding key
</td></tr>
<tr><td markdown="1">
[createControllerFactoryForClass(controllerCtor)](./rest.createcontrollerfactoryforclass.md)
</td><td markdown="1">
Create a controller factory function for a given class
</td></tr>
<tr><td markdown="1">
[createControllerFactoryForInstance(controllerInst)](./rest.createcontrollerfactoryforinstance.md)
</td><td markdown="1">
Create a controller factory function for a given instance
</td></tr>
<tr><td markdown="1">
[createResolvedRoute(route, pathParams)](./rest.createresolvedroute.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[createRoutesForController(spec, controllerCtor, controllerFactory)](./rest.createroutesforcontroller.md)
</td><td markdown="1">
Create routes for a controller with the given spec
</td></tr>
<tr><td markdown="1">
[getContentType(req)](./rest.getcontenttype.md)
</td><td markdown="1">
Get the content-type header value from the request
</td></tr>
<tr><td markdown="1">
[getParserOptions(type, options)](./rest.getparseroptions.md)
</td><td markdown="1">
Extract parser options based on the parser type
</td></tr>
<tr><td markdown="1">
[getParserOptions(type, options)](./rest.getparseroptions_1.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[getParserOptions(type, options)](./rest.getparseroptions_2.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[getParserOptions(type, options)](./rest.getparseroptions_3.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[getPathVariables(path)](./rest.getpathvariables.md)
</td><td markdown="1">
Get all path variables. For example, `/root/{foo}/bar` =<!-- -->> `['foo']`
</td></tr>
<tr><td markdown="1">
[invokeBodyParserMiddleware(handle, request)](./rest.invokebodyparsermiddleware.md)
</td><td markdown="1">
Parse the request body asynchronously
</td></tr>
<tr><td markdown="1">
[joinPath(basePath, path)](./rest.joinpath.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[normalizeParsingError(err)](./rest.normalizeparsingerror.md)
</td><td markdown="1">
Normalize parsing errors as `4xx`
</td></tr>
<tr><td markdown="1">
[parseJson(text, reviver, prohibitedKeys)](./rest.parsejson.md)
</td><td markdown="1">
Parse a json string that rejects prohibited keys
</td></tr>
<tr><td markdown="1">
[parseOperationArgs(request, route, requestBodyParser, options)](./rest.parseoperationargs.md)
</td><td markdown="1">
Parses the request to derive arguments to be passed in for the Application controller method
</td></tr>
<tr><td markdown="1">
[rebaseOpenApiSpec(spec, basePath)](./rest.rebaseopenapispec.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[sanitizeJsonParse(reviver, prohibitedKeys)](./rest.sanitizejsonparse.md)
</td><td markdown="1">
Factory to create a reviver function for `JSON.parse` to sanitize keys
</td></tr>
<tr><td markdown="1">
[toExpressPath(path)](./rest.toexpresspath.md)
</td><td markdown="1">
Convert an OpenAPI path to Express (path-to-regexp) style
</td></tr>
<tr><td markdown="1">
[validateApiPath(path)](./rest.validateapipath.md)
</td><td markdown="1">
Validate the path to be compatible with OpenAPI path template. No parameter modifier, custom pattern, or unnamed parameter is allowed.
</td></tr>
<tr><td markdown="1">
[validateRequestBody(body, requestBodySpec, globalSchemas, options)](./rest.validaterequestbody.md)
</td><td markdown="1">
Check whether the request body is valid according to the provided OpenAPI schema. The JSON schema is generated from the OpenAPI schema which is typically defined by `@requestBody()`<!-- -->. The validation leverages AJV schema validator.
</td></tr>
<tr><td markdown="1">
[validateValueAgainstSchema(value, schema, globalSchemas, options)](./rest.validatevalueagainstschema.md)
</td><td markdown="1">
Validate the value against JSON schema.
</td></tr>
<tr><td markdown="1">
[writeResultToResponse(response, result)](./rest.writeresulttoresponse.md)
</td><td markdown="1">
Writes the result from Application controller method into the HTTP response
</td></tr>
</tbody></table>
## Interfaces
<table><thead><tr><th>
Interface
</th><th>
Description
</th></tr></thead>
<tbody><tr><td markdown="1">
[ApiExplorerOptions](./rest.apiexploreroptions.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[BodyParser](./rest.bodyparser.md)
</td><td markdown="1">
Interface to be implemented by body parser extensions
</td></tr>
<tr><td markdown="1">
[HttpServerLike](./rest.httpserverlike.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[Node](./rest.node.md)
</td><td markdown="1">
A Node in the trie
</td></tr>
<tr><td markdown="1">
[OpenApiSpecForm](./rest.openapispecform.md)
</td><td markdown="1">
The form of OpenAPI specs to be served
</td></tr>
<tr><td markdown="1">
[OpenApiSpecOptions](./rest.openapispecoptions.md)
</td><td markdown="1">
Options to customize how OpenAPI specs are served
</td></tr>
<tr><td markdown="1">
[RequestBodyParserOptions](./rest.requestbodyparseroptions.md)
</td><td markdown="1">
Options for request body parsing See https://github.com/expressjs/body-parser/\#options
Built-in parsers retrieve their own options from the request body parser options. The parser specific properties override common ones.
</td></tr>
<tr><td markdown="1">
[RequestWithSession](./rest.requestwithsession.md)
</td><td markdown="1">
extending express request type with a session field
</td></tr>
<tr><td markdown="1">
[ResolvedNode](./rest.resolvednode.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[ResolvedRoute](./rest.resolvedroute.md)
</td><td markdown="1">
A route with path parameters resolved
</td></tr>
<tr><td markdown="1">
[RestRouter](./rest.restrouter.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[RestServerResolvedOptions](./rest.restserverresolvedoptions.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[RouteEntry](./rest.routeentry.md)
</td><td markdown="1">
An entry in the routing table
</td></tr>
<tr><td markdown="1">
[SequenceHandler](./rest.sequencehandler.md)
</td><td markdown="1">
A sequence handler is a class implementing sequence of actions required to handle an incoming request.
</td></tr>
<tr><td markdown="1">
[Session](./rest.session.md)
</td><td markdown="1">
interface to set variables in user session
</td></tr>
<tr><td markdown="1">
[SessionUserProfile](./rest.sessionuserprofile.md)
</td><td markdown="1">
user profile to add in session
</td></tr>
<tr><td markdown="1">
[ValidationOptions](./rest.validationoptions.md)
</td><td markdown="1">
Options for request body validation using AJV
</td></tr>
<tr><td markdown="1">
[ValueValidationOptions](./rest.valuevalidationoptions.md)
</td><td markdown="1">
Options for any value validation using AJV
</td></tr>
</tbody></table>
## Namespaces
<table><thead><tr><th>
Namespace
</th><th>
Description
</th></tr></thead>
<tbody><tr><td markdown="1">
[builtinParsers](./rest.builtinparsers.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[RestBindings](./rest.restbindings.md)
</td><td markdown="1">
RestServer-specific bindings
</td></tr>
<tr><td markdown="1">
[RestHttpErrors](./rest.resthttperrors.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[RestMiddlewareGroups](./rest.restmiddlewaregroups.md)
</td><td markdown="1">
Built-in middleware groups for the REST sequence
</td></tr>
<tr><td markdown="1">
[RestTags](./rest.resttags.md)
</td><td markdown="1">
Binding tags for RestServer
</td></tr>
</tbody></table>
## Variables
<table><thead><tr><th>
Variable
</th><th>
Description
</th></tr></thead>
<tbody><tr><td markdown="1">
[DEFAULT\_LIMIT](./rest.default_limit.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[ERR\_NO\_MULTI\_SERVER](./rest.err_no_multi_server.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[REQUEST\_BODY\_PARSER\_TAG](./rest.request_body_parser_tag.md)
</td><td markdown="1">
Binding tag for request body parser extensions
</td></tr>
<tr><td markdown="1">
[SequenceActions](./rest.sequenceactions.md)
</td><td markdown="1">
</td></tr>
</tbody></table>
## Type Aliases
<table><thead><tr><th>
Type Alias
</th><th>
Description
</th></tr></thead>
<tbody><tr><td markdown="1">
[AjvErrorOptions](./rest.ajverroroptions.md)
</td><td markdown="1">
Options for AJV errors
</td></tr>
<tr><td markdown="1">
[AjvFactory](./rest.ajvfactory.md)
</td><td markdown="1">
Factory function for Ajv instances
</td></tr>
<tr><td markdown="1">
[AjvFormat](./rest.ajvformat.md)
</td><td markdown="1">
Ajv format definition with a name
</td></tr>
<tr><td markdown="1">
[AjvKeyword](./rest.ajvkeyword.md)
</td><td markdown="1">
Ajv keyword definition with a name
</td></tr>
<tr><td markdown="1">
[BodyParserFunction](./rest.bodyparserfunction.md)
</td><td markdown="1">
Plain function for body parsing
</td></tr>
<tr><td markdown="1">
[BodyParserMiddleware](./rest.bodyparsermiddleware.md)
</td><td markdown="1">
Express body parser function type
</td></tr>
<tr><td markdown="1">
[ControllerClass](./rest.controllerclass.md)
</td><td markdown="1">
Controller class
</td></tr>
<tr><td markdown="1">
[ControllerFactory](./rest.controllerfactory.md)
</td><td markdown="1">
A factory function to create controller instances synchronously or asynchronously
</td></tr>
<tr><td markdown="1">
[ControllerInstance](./rest.controllerinstance.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[FindRoute](./rest.findroute.md)
</td><td markdown="1">
Find a route matching the incoming request. Throw an error when no route was found.
</td></tr>
<tr><td markdown="1">
[HttpRequestListener](./rest.httprequestlistener.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[InvokeMethod](./rest.invokemethod.md)
</td><td markdown="1">
Invokes a method defined in the Application Controller
</td></tr>
<tr><td markdown="1">
[LogError](./rest.logerror.md)
</td><td markdown="1">
Log information about a failed request.
</td></tr>
<tr><td markdown="1">
[NodeWithValue](./rest.nodewithvalue.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[OperationArgs](./rest.operationargs.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[OperationRetval](./rest.operationretval.md)
</td><td markdown="1">
Return value of a controller method (a function implementing an operation). This is a type alias for "any", used to distinguish operation results from other "any" typed values.
</td></tr>
<tr><td markdown="1">
[ParseParams](./rest.parseparams.md)
</td><td markdown="1">
A function to parse OpenAPI operation parameters for a given route
</td></tr>
<tr><td markdown="1">
[PathParameterValues](./rest.pathparametervalues.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[Reject](./rest.reject.md)
</td><td markdown="1">
Reject the request with an error.
</td></tr>
<tr><td markdown="1">
[RequestBody](./rest.requestbody.md)
</td><td markdown="1">
Request body with metadata
</td></tr>
<tr><td markdown="1">
[RequestBodyValidationOptions](./rest.requestbodyvalidationoptions.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[RestComponentConfig](./rest.restcomponentconfig.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[RestRouterOptions](./rest.restrouteroptions.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[RestServerConfig](./rest.restserverconfig.md)
</td><td markdown="1">
Valid configuration for the RestServer constructor.
</td></tr>
<tr><td markdown="1">
[RestServerOptions](./rest.restserveroptions.md)
</td><td markdown="1">
RestServer options
</td></tr>
<tr><td markdown="1">
[RestServerResolvedConfig](./rest.restserverresolvedconfig.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[RouterSpec](./rest.routerspec.md)
</td><td markdown="1">
</td></tr>
<tr><td markdown="1">
[SchemaValidatorCache](./rest.schemavalidatorcache.md)
</td><td markdown="1">
Cache for AJV schema validators
</td></tr>
<tr><td markdown="1">
[Send](./rest.send.md)
</td><td markdown="1">
Send the operation response back to the client.
</td></tr>
<tr><td markdown="1">
[SequenceFunction](./rest.sequencefunction.md)
</td><td markdown="1">
A sequence function is a function implementing a custom sequence of actions to handle an incoming request.
</td></tr>
</tbody></table>