gpt4 book ai didi

node.js - 打开 api 错误 : request should have required property '.headers' - docker

转载 作者:行者123 更新时间:2023-12-04 13:09:59 25 4
gpt4 key购买 nike

我的 nodejs 应用程序有一个 open-api.yaml 文件和 express-openapi-validate验证器。我正在执行一个 POST 请求,该请求正在运行,并且 api 验证器没有返回任何错误:

curl --request POST 'http://localhost:33004/my-app/settings' --data-raw '{"serials":["1234","2355"]}' -H 'Content-Type: application/json'
在我的 open-api.yaml 我有:
openapi: '3.0.0'
servers:
- url: 'http://{host}/my-app'
variables:
host:
enum:
- 'localhost'
....
...
paths:
/settings:
...
post:
tags:
- 'settings'
operationId: 'postSettings'
requestBody:
content:
application/json:
schema:
type: object
properties:
serials:
type: array
items:
type: string
...
然后我尝试 dockerizing 我的应用程序 - 创建了一个 docker 容器,并使用 pm2-runtime 在里面运行它。但是,当我在应用程序在其中运行时向 docker 容器发送相同的请求时,我得到 error while validating request: request should have required property '.headers' .我在 open-api.yaml 文件中没有提到属性“.headers”。
我尝试删除验证器中间件,并且请求通过得很好。你能帮我理解验证器在提示什么吗?
编辑:
我设法找到了错误对象:
{
"data": [
{
"dataPath": "",
"keyword": "required",
"message": "should have required property '.headers'",
"params": {
"missingProperty": ".headers"
},
"schemaPath": "#/required"
}
],
"name": "ValidationError",
"statusCode": 400
}
不用说我没有必需的 headers 属性......

最佳答案

对于所有 Node 版本 <= 14 和 express-openapi-validator 版本 <= 3,我都有相同的内容。
不可能让验证器使用 Node 版本 16,因此我们被困在旧的开发版本上。
解决方案是迁移到 express-openapi-validator v4。
此处解释迁移 https://github.com/cdimascio/express-openapi-validator#upgrading-from-3x
这(v3):

const validator = new OpenApiValidator({
apiSpec: openApiYaml,
operationHandlers: __dirname
})
app.use(validator)
变成(v4):
const validator = OpenApiValidator.middleware({
apiSpec: 'src/openapi.yaml'
})
app.use(validator)
代码最初由 https://hub.docker.com/r/openapitools/openapi-generator-cli 生成

关于node.js - 打开 api 错误 : request should have required property '.headers' - docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66420890/

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