2017-08-24 23 views
0

我定义了一个将MyObject作为参数的路径。 MyObject具有猫和狗的属性。这些都有默认值。 在swagger编辑器中,示例不显示默认值,但尝试使用正确的默认值创建MyObject。swagger-ui中可以作为参数传递的swagger对象是否有默认值?

在swagger-ui中,我可以在Models下看到默认值,但在API中看不到。有没有办法设置这些默认设置? 招摇: '2.0' 信息: 标题:使用默认属性作为参数 描述通对象:等 版本: “草稿0.1.1” 宿主:example.com 基本路径:/ 生产: - 应用/ JSON

paths: 
    /myobject: 

    post: 
     summary: | 
     post an object. 
     parameters: 
     - name: myObject 
      in: body 
      required: true 
      schema: 
      type: array 
      items: 
       $ref: '#/definitions/MyObject' 
     responses: 
     200: 
      description: OK 

definitions: 

    MyObject: # move to/models/model.yml 
     type: object 
     description: Contains default properties 
     required: 
     - cats 
     - dogs 
     properties: 
     cats: 
      type: number 
      default: 9 
     dogs: 
      type: string 
      default: "fido" 

swagger-editor api

swagger-ui API (try it out)

swagger-ui Models shows the default values

回答

2

您对default的使用是错误的。您可能需要example

default仅用于与可选字段和是在服务器端处理。也就是说,如果客户端不在有效负载中提供值,则服务器将使用default值。

考虑这个User模式:

definitions: 
    User: 
    type: object 
    required: 
     - username 
    properties: 
     username: 
     type: string 
     role: 
     type: string 
     enum: 
      - user 
      - poweruser 
      - admin 
     default: user 

role属性是可选的,默认为user。所以,如果客户端发送有效载荷不role

{ 
    "username": "bob" 
} 

服务器将承担role = user


就你而言,它看起来像你想提供的字段的示例值。这就是example关键字的用途:

definitions: 
    MyObject: 
    type: object 
    description: Contains default properties 
    required: 
     - cats 
     - dogs 
    properties: 
     cats: 
     type: number 
     example: 9  # <--- 
     dogs: 
     type: string 
     example: fido # <--- 
相关问题