2016-11-03 5 views
2

Наши текущие шаблоны развертывания требуют от меня вручную написать мой jag-файл swagger, который будет использоваться пользовательским интерфейсом Swagger, используемым в моей компании. Я бы хотел, чтобы json, который я писал, предоставлял значения по умолчанию для заполнения пользовательского интерфейса Swagger для всех полей ввода, включая параметр ввода тела. Моим параметром body является ссылочный объект, как показано ниже. Как я могу определить возвращаемый swagger JSON для автоматического заполнения части тела запроса при нажатии «Попробовать эту операцию»?Как определить Swagger 2.0 JSON для заполнения объекта объекта тела объекта по умолчанию в интерфейсе Swagger?

Пример Спецификация Swagger, которая не имеет данных по умолчанию/примера, заполненных в пользовательском интерфейсе Swagger, находится ниже.

{ 
    "swagger":"2.0", 
    "info":{ 
     "description":"Example API Description", 
     "title":"Example Title", 
     "version":"v3.0" 
    }, 
    "tags":[ 
     { 
     "name":"v3" 
     } 
    ], 
    "consumes":[ 
     "application/json" 
    ], 
    "produces":[ 
     "application/json" 
    ], 
    "paths":{ 
     "/v3/api/{subscriptionID}/example":{ 
     "post":{ 
      "tags":[ 
       "v3" 
      ], 
      "description":"This API will do something", 
      "consumes":[ 
       "application/json" 
      ], 
      "produces":[ 
       "application/json" 
      ], 
      "parameters":[ 
       { 
        "name":"Accept", 
        "in":"header", 
        "description":"The Accept request-header field can be used to specify the media types which are acceptable for the response. If not provided, the default value will be application/json", 
        "required":false, 
        "default":"application/json", 
        "type":"string" 
       }, 
       { 
        "name":"Content-Type", 
        "in":"header", 
        "description":"The MIME type of the body of the request. Required for PUT, POST, and PATCH, where a request body is expected to be provided.", 
        "required":true, 
        "default":"application/json; charset=utf-8", 
        "type":"string" 
       }, 
       { 
        "name":"company_locale", 
        "in":"header", 
        "description":"The desired language as spoken in a particular region preference of the customer of this particular transaction. Consists of two lower case language", 
        "required":true, 
        "default":"en_US", 
        "type":"string" 
       }, 
       { 
        "name":"originatingip", 
        "in":"header", 
        "description":"The originating ip address of the calling device or browser.", 
        "required":true, 
        "default":"100.100.10.1", 
        "type":"string" 
       }, 
       { 
        "name":"transaction_id", 
        "in":"header", 
        "description":"The transaction identifier for this invocation of the service. ", 
        "required":true, 
        "default":"1e2bd51d-a865-4d37-9ac9-c345dc59119b", 
        "type":"string" 
       }, 
       { 
        "name":"subscriptionID", 
        "in":"path", 
        "description":"The unique identifier that represents the subscribed portfolio of products.", 
        "required":true, 
        "default":"1e2bd51d", 
        "type":"string" 
       }, 
       { 
        "name":"body", 
        "in":"body", 
        "description":"The body of the request", 
        "required":true, 
        "schema":{ 
        "$ref":"#/definitions/exampleDefinition" 
        } 
       } 
      ], 
      "responses":{ 
       "200":{ 
        "description":"OK", 
        "headers":{ 
        "transaction_id":{ 
         "type":"string", 
         "default":"de305d54-75b4-431b-adb2-eb6b9e546013", 
         "description":"The identifier for the service transaction attempt." 
        } 
        } 
       } 
      } 
     } 
     } 
    }, 
    "definitions":{ 
     "exampleDefinition":{ 
     "type":"object", 
     "description":"Request details for Example Definition", 
     "properties":{ 
      "action":{ 
       "type":"string", 
       "description":"Specifies the action to be taken" 
      }, 
      "applyToBase":{ 
       "type":"string", 
       "description":"A boolean value that defines the behaviour of the request against the base" 
      }, 
      "addOnIDs":{ 
       "type":"string", 
       "description":"The identifiers for the add-ons" 
      } 
     }, 
     "required":[ 
      "action", 
      "applyToBase", 
      "addOnIDs" 
     ] 
     } 
    } 
} 

Я проверял это на http://editor.swagger.io/#/ JSON, нажав File->Paste JSON.... Затем нажмите "Try this operation", прокрутите вниз и обратите внимание, что значения параметра моего тела не заполнены - вот что я хотел бы изменить.

Заранее благодарим за любые предложения.

ответ

6

Чтобы иметь иллюстративные значения, нужно просто добавить свойство «пример», где это необходимо:

exampleDefinition: 
    type: object 
    description: Request details for Example Definition 
    properties: 
    action: 
     type: string 
     description: Specifies the action to be taken 
     example: An action value 
    applyToBase: 
     type: string 
     description: >- 
     A boolean value that defines the behaviour of the request against the base 
     example: An apply to base value 
    addOnIDs: 
     type: string 
     description: The identifiers for the add-ons 
     example: an ID 

К сожалению, онлайн редактор не предлагают их, но SwaggerUI делает: SwaggerUI

-1

Для заполнения значения по умолчанию, которые будут использоваться при нажатии «Попробовать эту операцию», вам просто нужно добавить параметр «по умолчанию» для свойств в определении. Это работает в онлайн-редакторе:

{ 
    "swagger":"2.0", 
    "info":{ 
     "description":"Example API Description", 
     "title":"Example Title", 
     "version":"v3.0" 
    }, 
    "tags":[ 
     { 
     "name":"v3" 
     } 
    ], 
    "consumes":[ 
     "application/json" 
    ], 
    "produces":[ 
     "application/json" 
    ], 
    "paths":{ 
     "/v3/api/{subscriptionID}/example":{ 
     "post":{ 
      "tags":[ 
       "v3" 
      ], 
      "description":"This API will do something", 
      "consumes":[ 
       "application/json" 
      ], 
      "produces":[ 
       "application/json" 
      ], 
      "parameters":[ 
       { 
        "name":"Accept", 
        "in":"header", 
        "description":"The Accept request-header field can be used to specify the media types which are acceptable for the response. If not provided, the default value will be application/json", 
        "required":false, 
        "default":"application/json", 
        "type":"string" 
       }, 
       { 
        "name":"Content-Type", 
        "in":"header", 
        "description":"The MIME type of the body of the request. Required for PUT, POST, and PATCH, where a request body is expected to be provided.", 
        "required":true, 
        "default":"application/json; charset=utf-8", 
        "type":"string" 
       }, 
       { 
        "name":"company_locale", 
        "in":"header", 
        "description":"The desired language as spoken in a particular region preference of the customer of this particular transaction. Consists of two lower case language", 
        "required":true, 
        "default":"en_US", 
        "type":"string" 
       }, 
       { 
        "name":"originatingip", 
        "in":"header", 
        "description":"The originating ip address of the calling device or browser.", 
        "required":true, 
        "default":"100.100.10.1", 
        "type":"string" 
       }, 
       { 
        "name":"transaction_id", 
        "in":"header", 
        "description":"The transaction identifier for this invocation of the service. ", 
        "required":true, 
        "default":"1e2bd51d-a865-4d37-9ac9-c345dc59119b", 
        "type":"string" 
       }, 
       { 
        "name":"subscriptionID", 
        "in":"path", 
        "description":"The unique identifier that represents the subscribed portfolio of products.", 
        "required":true, 
        "default":"1e2bd51d", 
        "type":"string" 
       }, 
       { 
        "name":"body", 
        "in":"body", 
        "description":"The body of the request", 
        "required":true, 
        "schema":{ 
        "$ref":"#/definitions/exampleDefinition" 
        } 
       } 
      ], 
      "responses":{ 
       "200":{ 
        "description":"OK", 
        "headers":{ 
        "transaction_id":{ 
         "type":"string", 
         "default":"de305d54-75b4-431b-adb2-eb6b9e546013", 
         "description":"The identifier for the service transaction attempt." 
        } 
        } 
       } 
      } 
     } 
     } 
    }, 
    "definitions":{ 
     "exampleDefinition":{ 
     "type":"object", 
     "description":"Request details for Example Definition", 
     "properties":{ 
      "action":{ 
       "type":"string", 
       "description":"Specifies the action to be taken", 
       "default": "The default Action" 
      }, 
      "applyToBase":{ 
       "type":"string", 
       "description":"A boolean value that defines the behaviour of the request against the base", 
       "default": "0" 
      }, 
      "addOnIDs":{ 
       "type":"string", 
       "description":"The identifiers for the add-ons", 
       "default": "The default Add-On" 
      } 
     }, 
     "required":[ 
      "action", 
      "applyToBase", 
      "addOnIDs" 
     ] 
     } 
    } 
} 

`` `

+0

-1. Значения значений следует указывать с помощью ключевого слова 'example' (как в ответе Арно Лоурета), а не' default'. 'default' имеет [различное значение] (https://stackoverflow.com/a/46172865/113116), это атрибут необязательных полей. – Helen

 Смежные вопросы

  • Нет связанных вопросов^_^