我正在尝试使用Swagger文档上的POST请求进行测试,但是我遇到了以下问题:
在Swagger编辑器上我可以正常测试它,但在Swagger UI上没有出现Request body字段,所以我无法输入我的电子邮件和密码来测试请求。
在这里,您可以看到Request body字段,其中包含可供编辑的数据示例: Swagger Editor Example
在这里你可以看到Swagger UI没有显示它: Swagger UI Example
注意:我已经生成了一个nodejs-server。
我的.yaml
代码:
openapi: '3.0.1'
info:
version: 1.0.0
title: Test
description: Test openapi.
servers:
- url: http://localhost:3005
paths:
/login:
post:
summary: Login
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/login'
responses:
200:
description: Test
components:
schemas:
login:
type: object
properties:
email:
type: string
example: [email protected]
password:
type: string
format: password
example: example123
expires:
type: integer
example: 86400
required:
- email
- password
TL; DR:将Swagger UI更新到最新版本。
只是为了澄清场景(对于未来的读者):OP将此OpenAPI 3.0定义粘贴到Swagger编辑器中,生成了一个Node.js服务器并运行它。请求正文显示问题是Swagger UI,它是此Node.js服务器(http://localhost:8080/docs
)的一部分。
问题是这个Node.js服务器使用了一个非常旧版本的Swagger UI。更具体地说,它使用oas3-tools
包v.1.0.1,它与Swagger UI v.3.3.1捆绑在一起。最新的Swagger UI版本(截至本文撰写时)为3.22.1,并且没有描述的问题。
解决方案是将Swagger UI更新到最新版本:
oas3-tools
并要求开发人员将捆绑的Swagger UI更新到最新版本。或者,自己提交PR。oas3-tools
,更新<oas3-tools>\middleware\swagger-ui
文件夹中捆绑的Swagger UI文件,然后更新生成的Node.js服务器的package.json
以引用您的oas3-tools
分支。