1.1.1 • Published 4 years ago

koa-ajv-parser v1.1.1

Weekly downloads
4
License
MIT
Repository
github
Last release
4 years ago

koa-ajv-parser

node version NPM version npm download

This module provides a middleware based on ajv that validates the parameters of the http request and saves the result to ctx.state.params. The middleware will throw an error when the validation fails, so be sure to intercept and handle the errors thrown when using this middleware.

中文说明

Install

npm i koa-ajv-parser

Usage

'use strict';

const ajvParser = require('koa-ajv-parser');

const rule = {
  params: { // root property, set all properties under it that do not contain default values and optional to be required
    id: { type: 'integer', minimum: 1 },
    name: 'string', // same as name:{ type:'string' }
    phone: { type: 'string', default: '110' },
    ext: {
      type: 'object',
      properties: {
        id: { type: 'integer' },
        name: { type: 'string' },
      },
      required: [ 'id', 'name' ],
      optional: true, // not required
    },
  },
  // getParams:(ctx, properties)=>{ return json;}
}

router.get('/yourpath',ajvParser(rule), routerHandler);
//http://yourpage/yourpath?id=2&name=sachiko&ext={%22id%22%3A1,%22name%22%3A%22momoka%22}
//ctx.state.params = {id:2, name:'sachiko', phone:'110', ext:{id:1, name:'momoka'}}

Precautions

  • Only under the params object, properties can be abbreviated in the form name: 'type'
  • Only under the params object, perform JSON.parse on the parameters of type object and array and then verify
  • Only under the params object, all properties are set to required by default unless the default value is set or optional: true
  • By default, the corresponding values are obtained in the order of ctx.request.body, ctx.request.query, ctx.params, or you can change this rule by configuring the getParams function. See getCtxParams for details.

Test

npm test

Author

985ch

License

Copyright © 2019 985ch. This project is MIT licensed. This README was translate by google