2016-09-01 3 views
8

Я хотел бы разместить массив строк какУкажите массив строк в качестве параметра тела в развязности API

[ 
    "id1", 
    "id2" 
] 

к API на основе Swagger. В моем файле развязность, у меня есть такие строки:

paths: 
    /some_url: 
    post: 
     parameters: 
     - name: ids 
      in: body 
      required: true 

Что такое правильный способ определить тип ids как массив строк?

Update:

Согласно спецификации, должно работать в моей опции:

parameters: 
    - in: body 
     description: xxx 
     required: true 
     schema: 
     type: array 
     items: 
      type: string 

https://github.com/Yelp/swagger_spec_validator не принимает и возвращает длинный список запутанных ошибок, которые выглядят подобно код ожидает $ref.

ответ

14

Ваше описание массива строки верное, но определение параметра пропускает свойство name.

Вот полный рабочий пример:

swagger: "2.0" 

info: 
    title: A dummy title 
    version: 1.0.0 

paths: 
    /path: 
    post: 
     parameters: 
     - in: body 
      description: xxx 
      required: true 
      name: a name 
      schema: 
      type: array 
      items: 
       type: string 
     responses: 
     default: 
      description: OK 

Попробуй редактор, чтобы проверить OpenAPI (FKA Swagger.) Функция: http://editor.swagger.io/

+0

Следует отметить, что с последней версией swagger codegen (2-2-3) эта конструкция даст исключение нулевого указателя. Вместо этого вам придется использовать ссылку на тип. – PeterS

2

Для массива, содержащего объект, как это содержание, определение объекта может быть также выраженные с использованием определений & $ ref. Пример:

schema: type: array items: $ref: '#/definitions/ObjectSchemaDefinition' definitions: ObjectSchemaDefinition: type: string

1

Я создал вопрос чванство как помощь, которую Arnaud, хотя действует YAML, даст вам NPE исключения при попытке генерации. Вам нужно будет указать объект, вроде следующего:

myDataItem: 
    type: object 
    description: A list of values 
    required: 
     - values 
    properties: 
     values: 
     type: array 
     items: 
      type: string 

А потом обратиться к нему (в вашем почтовом пункте и т.д.):

schema: 
    $ref: "#/definitions/myDataItem" 

Для справок вопрос GitHub:

https://github.com/swagger-api/swagger-codegen/issues/6745

Примечание. Проблема была исправлена ​​в версии 2.3.0 и выше, в идеале вы должны перейти на эту версию.

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