UNPKG

@loopback/docs

Version:

Documentation files rendered at [https://loopback.io](https://loopback.io)

1,320 lines (601 loc) 20.6 kB
--- 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) &gt; [@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` =<!-- -->&gt; `['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>