gpt4 book ai didi

javascript - 使用 Joi、nodejs 验证 header 参数?

转载 作者:行者123 更新时间:2023-12-05 04:55:58 25 4
gpt4 key购买 nike

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

非常感谢!

最佳答案

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

关于javascript - 使用 Joi、nodejs 验证 header 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65106628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com