如何在swagger中指定字段是可选的还是必需的?

use*_*074 18 swagger

如果字段是可选的或需要的,那么如何定义swagger以及默认值是什么?

Wil*_*eng 29

默认情况下,模型中的字段是可选的,除非您将它们放在required列表中.下面就是一个例子- id,category是可选字段,name是必需的.请注意,这required不是字段的属性,而是对象本身的属性 - 它是必需属性的列表.

type: object
required:  # List the required properties here
  - name
properties:
  id:
    type: integer
    format: int64
  category:
    $ref: '#/definitions/Category'
  name:
    type: string
    example: doggie
Run Code Online (Sandbox Code Playgroud)

参考:https://github.com/swagger-api/swagger-codegen/blob/master/modules/swagger-codegen/src/test/resources/2_0/petstore.yaml#L658

如果这是请求正文的模型,您可能还需要将正文标记为required:

# swagger: '2.0'

parameters:
  - in: body
    name: body
    required: true  # <----
    schema:
      $ref: '#/definitions/Pet'

# openapi: 3.0.1

requestBody:
  required: true  # <----
  content:
    ...
Run Code Online (Sandbox Code Playgroud)

要指定可选字段的默认值,可以使用该default属性.这是一个例子:

type: object
properties:
  huntingSkill:
    type: string
    description: The measured skill for hunting
    default: lazy
Run Code Online (Sandbox Code Playgroud)


小智 10

另一种语法:

Response:
  type: object
  required: [id, title]
  properties:
    id:
      type: string
    title:
      type: string
Run Code Online (Sandbox Code Playgroud)


Boh*_*dan 8

除非标记为必填字段,否则字段是可选的。

您像这样列出必填字段:

SomeObject:
    type: object
    required:
      - name
      - fartingPower
    properties:
      name:
        type: string
      fartingPower:
        type: integer
Run Code Online (Sandbox Code Playgroud)

  • 仅fartingPower值得+1 (3认同)