首页 > 解决方案 > “请求正文”未出现在 Swagger UI 上

问题描述

我正在尝试对我的 Swagger 文档上的POST请求进行测试,但遇到以下问题:

在 Swagger Editor 上我可以正常测试它,但在 Swagger UI 上,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: example@example.com.br
        password:
          type: string
          format: password
          example: example123
        expires:
          type: integer
          example: 86400
      required:
       - email
       - password

标签: node.jsswaggeropenapi

解决方案


TL;DR:将 Swagger UI 更新到最新版本。

只是为了澄清场景(供未来的读者使用):OP 将此 OpenAPI 3.0 定义粘贴到 Swagger Editor 中,生成 Node.js 服务器并运行它。请求正文显示问题与作为此 Node.js 服务器 ( http://localhost:8080/docs) 一部分的 Swagger UI 相关。

问题是这个 Node.js 服务器使用了一个非常旧版本的 Swagger UI。更具体地说,它使用 oas3-tools包 v. 1.0.1,其中捆绑了 Swagger UI v. 3.3.1。最新的 Swagger UI 版本(在撰写本文时)是 3.22.1,它没有描述的问题。

解决方案是将 Swagger UI 更新到最新版本:

  • 存储库中存在将捆绑的 Swagger UI 更新到最新版本的问题。oas3-tools考虑提交 PR 来解决这个问题。

  • 作为快速修复,您可以 fork oas3-tools,更新文件夹中捆绑的 Swagger UI 文件<oas3-tools>\middleware\swagger-ui,然后更新package.json生成的 Node.js 服务器的 以引用您的oas3-toolsfork。


推荐阅读