首页 > 解决方案 > 如何在 OpenAPI 3.0 中指定可重用请求正文参数的架构

问题描述

swagger 文档站点显示了这种情况的示例,但它并没有一路显示Pet模式的定义。

例如:

paths:
  /pets:
    post:
      summary: Add a new pet
      requestBody:
        $ref: '#/components/requestBodies/PetBody'
  /pets/{petId}
    put:
      summary: Update a pet
      parameters: [ ... ]
      requestBody:
        $ref: '#/components/requestBodies/PetBody'
components:
  requestBodies:
    PetBody:
      description: A JSON object containing pet information
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Pet'

我不明白在这种情况下请求正文参数名称的位置。我想看看 的定义#/components/schemas/Pet。对于查询参数,您可以在其中为每个参数components/parameters定义 aname和 a 。schema但我没有看到请求正文参数的等价物。例如,如果我有POST /api/pets一个application/json身体:

{ "name": "Fluffy", "type": "cat", "legs": 4 }

我在哪里描述参数name,包括它们typelegs名字?

同样在一个不相关的主题上,如果有 OpenAPI v3.0 的标签会很好(不知道如何创建一个)

这里也可能有相关问题。

标签: openapi

解决方案


在搜索了我认为我现在理解的招摇文档之后,我认为Pet架构将是:

components:
   schemas:
      Pet:
         type: object
         properties:
            name:
               type: string
            type:
               type: string
            legs:
               type: integer
         required:
            - type

我错过了这个properties属性。


推荐阅读