Swagger UI上不显示“请求正文”

问题描述 投票:0回答:1

我正在尝试使用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
node.js swagger openapi
1个回答
0
投票

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更新到最新版本:

  • 您可以使用open an issue oas3-tools并要求开发人员将捆绑的Swagger UI更新到最新版本。或者,自己提交PR。
  • 作为快速修复,您可以分叉oas3-tools,更新<oas3-tools>\middleware\swagger-ui文件夹中捆绑的Swagger UI文件,然后更新生成的Node.js服务器的package.json以引用您的oas3-tools分支。
© www.soinside.com 2019 - 2024. All rights reserved.