swift / openapi中“内容”的含义是“响应”:

mik*_*ike 0 yaml swagger swagger-codegen

使用扬鞭/ OpenAPI的(随后招摇,代码生成),我一直没能找到有什么区别应该是之间

这是从https://swagger.io/specification/#responsesObject获取的 (第一个示例,json格式)

"responses" : {
  "200": {
    "description": "a pet to be returned",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/Pet"
} } } } }
Run Code Online (Sandbox Code Playgroud)

和

"responses" : {
  "200": {
    "description": "a pet to be returned",
    "schema": {
      "$ref": "#/components/schemas/Pet"
} } }
Run Code Online (Sandbox Code Playgroud)

我已将此示例放入一个简单的json swagger规范(json)中,并运行Swagger-Codegen(python,flask)来生成我的控制器和模型。Yaml似乎是首选的内部表示形式,因此当生成器运行时,它将创建一个yaml文件。

对于前者,响应类型为“无”

responses:
  200:
    description: "a pet to be returned"
Run Code Online (Sandbox Code Playgroud)

而后者产生了我认为我应该期望的:

responses:
  200:
    description: "a pet to be returned"
    schema:
      $ref: "#/components/schemas/Pet"
Run Code Online (Sandbox Code Playgroud)

例如,似乎使用以下语法从第一个语法中省略了模式 Content

内容是什么意思?我在示例中缺少什么,为什么Content结果没有返回Non-None返回类型和相应的模式。

请注意SwaggerCodgen:生成的代码与生成的yaml所说的完全匹配,因此在这里我没有包括任何这些细节

Hel*_*len 5

第一个示例是OpenAPI 3.0,第二个示例是OpenAPI 2.0,因此有所不同。

所述content在所述OpenAPI 3.0中使用的关键字为替换consumes/ produces从所述OpenAPI 2.0。在的上下文中responses,content表示响应具有主体,并指定响应主体的媒体类型(JSON / XML / etc。)和结构。

OpenAPI 2.0版本:

swagger: "2.0"
...
paths:
  /foo:
    get:
      produces:
        - application/json
      responses:
        200:
          description: OK
          schema:
            $ref: "#/definitions/Pet"
Run Code Online (Sandbox Code Playgroud)

OpenAPI 3.0版本:

openapi: 3.0.0
...
paths:
  /foo:
    get:
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Pet"
Run Code Online (Sandbox Code Playgroud)

代码生成问题可能是由以下原因引起的:

  • 程式码尚不支援OpenAPI 3.0
  • 规范无效(例如,混合使用2.0和3.0关键字)