koa-mapper
koa-mapper
is a better and smart router middleware for koa. (Inspired bykoa-router
)
- Support almost all features of
koa-router
- Support for parameters validation
- Support parameters in
path
,header
,query
,cookie
- Support body parser
- Support request body validation
- Support coerce data types of parameters and body
- Support OpenAPI generation
Installation
npm install koa-mapper
Example
;;; const app = ; app; const mapper = ; mapper; mapper; mapper; app;app; app; // open http://localhost:3000/users/123?info[id]=456&info[name]=hello// open http://localhost:3000/openapi.json
API Reference
new Mapper([options])
Options
Name | Type | Default | Description |
---|---|---|---|
prefix | string |
'' |
the path prefix for a Mapper |
openURL | string or false |
/openapi.json |
OpenAPI route, false to disable OpenAPI |
bodyparser | object or boolean |
false |
koa-body options, true|{} to enable body parser |
throwParamsError | function or boolean |
utils.validateError |
Throw error for params invalid |
throwBodyError | function or boolean |
utils.validateError |
Throw error for body invalid |
validator | object |
{} |
ajv options |
sensitive | boolean |
false |
sensitive option for path-to-regexp |
strict | boolean |
false |
strict option for path-to-regexp |
mapper.get|put|post|del(path, [options], ...middlewares) => Mapper
type options = name: string // route name, default null prefix: string // route prefix, default '' bodyparser: object|boolean // like Mapper options.bodyparser
More fields of Operation Object
type Params = in: string // parameter in: `path`, `query`, `header`, `cookie` type: string // parameter type ...others // Fields of OpenAPI Parameter Object
More fields of OpenAPI Parameter Object
type
support:
- Basic type:
array
,boolean
,integer
,null
,number
,object
,string
,date
,time
,datetime
,regex
- Array type:
array<string>
,array<number|string>
- Custom type:
Pet
,array<Pet>
type Body = string | property: Schema
body examples:
body: 'Pet'
=>body: { $ref: 'Pet' }
body: { id: { type: 'number' } }
=>body: { type: 'object', properties: { id: { type: 'number' } }}
mapper.schema(name, properties, options) => Mapper
alias mapper.define()
mapper;mapper;mapper;
Support type extends:
mapper;mapper;
BodyParser
mapper;
Multipart and file upload:
mapper;
License
MIT