我正在我的应用程序中构建一个新的endpoint,它使用Expres-openapi-validator
作为验证器中间件。
/* index.ts */
import * as OpenApiValidator from 'express-openapi-validator';
const whitelistedPaths = [/* regex tested paths */];
app.use(
OpenApiValidator.middleware({
apiSpec: './schema/api.json',
validateResponses: true,
ignorePaths: whitelistedPaths,
validateSecurity: true,
}),
);
/* ... */
app.post(
'/users/:email/validateToken',
bodyParser.json(),
(req) => validateToken(req.params.email, req.body.resetToken),
);
在我的配置 (api.json
) 文件中,我已将终结点的架构定义为:
"/users/{email}/validateToken": {
"post": {
"tags": ["users"],
"summary": "Validate user token",
"operationId": "validateToken",
"responses": {
"200": {
"description": "Ok",
"content": {
"application/json": {
"schema": {}
}
}
}
},
"parameters": [
{
"name": "email",
"in": "path",
"description": "User email",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["resetToken"],
"properties": {
"resetToken": {
"type": "string"
}
}
}
}
}
}
}
},
我已经使用以下JSON正文使用Postman进行了测试:
{
"resetToken": "randomd9320ru9"
}
但收到以下错误消息:
{
"message": "request should have required property 'body'",
"errors": [
{
"path": ".body",
"message": "should have required property 'body'",
"errorCode": "required.openapi.validation"
}
]
}
我不知道它为什么抱怨body
。我试着在api.json
中的Request estBody
配置下放入"必需": true
,但这并没有改变任何事情。我只是想确保body包含所需的字段resetToken
。
我想你需要在使用OpenApiValidator.middleware
之前使用bodyParser.json()
:
js prettyprint-override">app.use(bodyParser.json());
app.use(
OpenApiValidator.middleware({
apiSpec: './schema/api.json',
validateRequests: true,
validateResponses: true,
ignorePaths: whitelistedPaths,
validateSecurity: true,
}),
);
...
app.post(
'/users/:email/validateToken',
(req) => validateToken(req.params.email, req.body.resetToken),
);
我的nodejs应用程序有一个开放api。yaml文件和ExpressOpenAPI验证验证器。我正在做一个POST请求,它正在工作,api验证程序没有返回任何错误: 在我的open-api.yaml中,我有: 然后我尝试对我的应用程序进行dockerized-创建了一个docker容器,并在pm2-runtime中运行它。但是,当应用程序在docker容器中运行时,我向它发送相同的请求时,在验证
问题内容: 在我的Web应用程序中,我对表单字段使用了一些自定义验证。在同一个表单中,我有两个按钮:一个用于实际提交表单,另一个用于取消/重置表单。 通常,我使用Safari作为默认浏览器。现在Safari5退出了,突然我的“取消/重置”按钮不再起作用了。每次按下重置按钮时,表单中的第一个字段都会获得焦点。但是,这与我的自定义表单验证相同。在其他浏览器上尝试时,一切都很好。我必须是Safari 5
我需要描述一个api,在请求体中有一个带有必填字段的对象,其中一个字段是一个对象本身,它有另一组必填字段。 我正在使用开放api v3和swagger编辑器(https://editor.swagger.io/)在我把我的。将yaml文件放到编辑器上,我生成了一个html客户端( 我希望字段1是必需的,字段2是可选的,但事实并非如此。 这是我的。yaml文件
我看了已经问过的问题,但没有一个能够解决我的问题。 < code > https://stack overflow . com/questions/45534187/path-and-formdata-parameter-at-same-time < code > https://stack overflow . com/questions/50562971/swagger-editor-show
我用一个形状元素作为视图的背景,做这个SO问题。我在用Android Studio,它告诉我... 解决了:原因是它不在文件夹中。 编辑:是的,我知道笔划部分不正确。
我正在尝试运行布谷鸟api。布谷鸟网在我的系统上运行良好。但当我尝试布谷鸟api时,我得到了以下错误: 我试图更改api。通过添加以下代码: 但这对我没有帮助。这个问题的解决方案是什么?