2016-07-04 3 views
4

У меня есть маршрут GET, где я хотел бы кодировать параметр объекта в url как строку запроса.Использовать параметр запроса типа объекта в документации swagger

При написании документации чванства я в основном получаю ошибки, которые не позволяют мне использовать schema типы/object в параметре в query типа:

paths: 
    /mypath/: 
    get: 
     parameters 
     - in: path 
      name: someParam 
      description: some param that works 
      required: true 
      type: string 
      format: timeuuid #good param, works well 
     - $ref: "#/parameters/mySortingParam" #this yields an error 

parameters: 
    mySortingParam 
    name: paging 
    in: query 
    description: Holds various paging attributes 
    required: false 
    schema: 
     type: object 
     properties: 
     pageSize: 
      type: number 
     cursor: 
      type: object 
      properties: 
      after: 
       type: string 
       format: string 

Пары запроса запрос, имеющие значение объекта будет закодированы в реальном запросе ,

Несмотря на то, что в верхней части экрана отображается ошибка, объект визуализируется правильно в редакторе пользовательских интерфейсов swagger, однако эта ошибка распространяется поверх документации.

ответ

6

Я не думаю, что вы можете использовать «объект» в качестве параметра запроса в Swagger спецификации в качестве параметра запроса поддерживает только примитивный тип (https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types)

+0

Да, это похоже на то, спасибо – Vee6

+1

Скорее разочарован этим, поскольку документация по swagger.io подразумевает в противном случае: https://swagger.io/docs/specification/describing-parameters/. См. Раздел в разделе «Схема и содержимое». Хотя ссылка выше описывает превращение объекта в тип контента, такой как JSON, он перестает давать пример, который напрямую связан с запросом OP. –

+0

@ DanielMaclean: ссылка, которую вы опубликовали, - это OpenAPI 3.0, тогда как ответ о OpenAPI/Swagger 2.0 (3.0 не существовал в 2016 году). Версия 2.0 этой ссылки: https://swagger.io/docs/specification/2-0/describing-parameters/ – Helen

0

Это возможно, но только не с Swagger т.е. OpenAPI v2. OpenAPI v3 описывает, как это можно здесь:

https://swagger.io/docs/specification/describing-parameters/

parameters: 
- in: query 
name: filter 
# Wrap 'schema' into 'content.<media-type>' 
content: 
    application/json: # <---- media type indicates how to serialize/deserialize the parameter content 
    schema: 
     type: object 
     properties: 
     type: 
      type: string 
     color: 
      type: string 

В то же время вы могли бы просто иметь параметр запроса в виде простого старого типа строки, а затем выполнить сериализацию вручную, а затем установите параметр запроса в обязательный. Это то, что я делаю, пока SwaggerUI полностью поддерживает OpenAPI v3.

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