Node.js &引用;请求机构“;不';t出现在大摇大摆的用户界面上

Node.js &引用;请求机构“;不';t出现在大摇大摆的用户界面上,node.js,swagger,openapi,Node.js,Swagger,Openapi,我正试图在我的招摇过市文档中使用POST请求进行测试,但遇到以下问题: 在Swagger Editor上,我可以正常测试它,但在Swagger UI上,请求正文字段不会出现,因此我无法放置电子邮件和密码来测试请求 在这里,您可以看到“请求正文”字段以及准备编辑的数据示例: 在这里,您可以看到大摇大摆的用户界面并没有显示它: 注意:我已经生成了一个nodejs服务器 My.yaml代码: openapi: '3.0.1' info: version: 1.0.0 title: Tes

我正试图在我的招摇过市文档中使用POST请求进行测试,但遇到以下问题:

在Swagger Editor上,我可以正常测试它,但在Swagger UI上,请求正文字段不会出现,因此我无法放置电子邮件和密码来测试请求

在这里,您可以看到“请求正文”字段以及准备编辑的数据示例:

在这里,您可以看到大摇大摆的用户界面并没有显示它:

注意:我已经生成了一个nodejs服务器

My
.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

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

为了澄清这个场景(面向未来读者):OP将这个OpenAPI3.0定义粘贴到Swagger编辑器中,生成一个Node.js服务器并运行它。请求正文显示问题与作为Node.js服务器一部分的Swagger UI有关(
http://localhost:8080/docs

问题是这个Node.js服务器使用了一个非常旧版本的Swagger UI。更具体地说,它使用 包五。1.0.1,它具有招摇过市的UI v。3.3.1与之捆绑。最新的Swagger UI版本(截至本文撰写之时)是3.22.1,它没有描述的问题

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

  • oas3工具
    存储库中有一个将捆绑的Swagger UI更新为最新版本的工具。考虑提交PR来解决这个问题。

  • 作为快速修复,您可以使用fork
    oas3工具
    ,更新
    \middleware\Swagger UI
    文件夹中捆绑的Swagger UI文件,然后更新生成的Node.js服务器的
    package.json
    以引用您的
    oas3工具
    fork


尽管“请求主体”字段确实显示在用户界面中,并带有建议的更新者,但发布的主体对象似乎仍然无法显示在控制器中,这可能是因为捆绑的swagger tools中间件也很旧。我必须对node_modules/oas3 tools/middleware/swagger metada.js进行一些更改,以使requestBody显示在控制器中的req.swagger.params上。我希望这有助于在一个正式代码正在工作时(如果有的话)完成一个项目

第162行,在
var parsers=..reduce(parameters…},[])之后

if (swaggerMetadata.operation.requestBody && parsers.indexOf(bodyParser) === -1) parsers.push(bodyParser);
if (req.body) swaggerMetadata.params.body = {value: req.body};
后的第225行,每个(参数,…})块:

if (swaggerMetadata.operation.requestBody && parsers.indexOf(bodyParser) === -1) parsers.push(bodyParser);
if (req.body) swaggerMetadata.params.body = {value: req.body};

对不起,我不明白如何更新大摇大摆的用户界面。您能更具体地说一下吗?您对oas3 tools/middleware/下的swagger-metada.js做了哪些更改。