2016-09-27 4 views
0

В пользовательском интерфейсе Swagger для моего приложения у меня есть методы POST и PUT, которые оба принимают POJO в качестве параметра body в вызове REST. Когда я смотрю на пользовательский интерфейс и нажимаю на схему модели, чтобы автоматически заполнить окно параметров (просто чтобы сэкономить время при вводе всего JSON), он не включает имя параметра, чтобы запрос не срабатывал. Пример:Схема схемы Swagger не включает имя переменной для параметра body

Модель схемы:

{ 
    "first": "string", 
    "last": "string", 
    "address": "string", 
    "email": "string", 
    . 
    . 
    . 
} 

Однако, чтобы сделать запрос мне нужно указать имя параметра entry, как так:

{ "entry": { 
    "first": "string", 
    "last": "string", 
    "address": "string", 
    "email": "string", 
    . 
    . 
    . 
}} 

Хотя это не слишком неудобно делать это сам перед тем как сделать запрос, это вызвало проблемы с другими разработчиками, использующими интерфейс Swagger для моего приложения, и не понимая, что им нужно добавить entry. Есть ли способ изменить схему модели?

ответ

1

Параметр name не используется как свойство в параметре body. Для того чтобы описать вашу модель, вы можете определить entry свойство с object типа, следующим образом:

definitions: 
    Entry: 
    type: object 
    properties: 
     entry: 
     type: object 
     properties: 
      first: 
      type: string 
      last: 
      type: string 
      address: 
      type: string 
      email: 
      type: string 

и вы можете использовать его в качестве схемы тела, как следует:

post: 
    produces: 
    - application/json 
    parameters: 
    - name: body 
     in: body 
     schema: 
     $ref: '#/definitions/Entry' 
+0

Где я ставлю этот код? – SVN600

+0

Поместите его под 'определения' и используйте его как схему тела. – Wilson

+0

Есть ли аннотация, которая автоматически создала бы правильную иерархию? – SVN600

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