繁体   English   中英

使用 Joi,nodejs 验证 header 参数?

[英]Validate a header parameter with Joi, nodejs?

我想检查 HTTP 请求的 header 的一个参数(在本例中为 docsLimit)。 所以我这样做了:

const {
  celebrate,
  Joi,
} = require('celebrate');
const joiObjectId = require('joi-objectid');

Joi.objectId = joiObjectId(Joi);

const limit = celebrate({
  headers: Joi.object().keys({
    docsLimit: Joi.number()
      .required()
      .default(10),
  }).options({ allowUnknown: true })
});

module.exports = limit;

在 app.js 中:

app.get(path, limit, getDocuments);

我不得不说我是 nodejs 的新手,尤其是 Joi,但这对我来说似乎很有意义。 这是错误的,因为如果我在标头中发送一个字符串,它无论如何都会接受它,即使我将它精确为一个数字。 如果我删除.options({ allowUnknown: true })那么它永远不会通过,即使有一个数字。 它说“UnhandledPromiseRejectionWarning:错误 [ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后无法设置标头”并返回 json,表示“不允许限制”。 使用 Joi 检查标头中的参数的方法是什么?

非常感谢你!

问题是 header 始终是一个字符串,所以我不应该执行 Joi.number()。 我应该使用 Joi.string() 然后,我检查一个正则表达式以便成为一个数字。 最后我在使用它之前把它转换成一个数字!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM