simple http request params pre-validation and convertation middleware factory for express powered by Joi
npm i --save request-contract
import RequestContract from ('request-contract')
const login = new RequestContract({
body: RequestContract.schema().object().keys({
email: RequestContract.schema().string().required(),
password: RequestContract.schema().string().required()
})
})
Supports #query, #body and #params request fields to configure
// then in controller
router.post('/login',
login,
async (req, res, next) => {
// your code
}
If request contains invalid field then calls #next() with BadRequest #Error which contain 400 status field and validation errors messages like this
{
"message": {
"errors": {
"params": null,
"body": null,
"query": "child \"page\" fails because [\"page\" must be a number]"
},
"message": "request contract requirements error"
}
}