Ответ Openapi3 и CSV (для Дредда) - PullRequest
0 голосов
/ 17 февраля 2020

Я тестирую свой Api с DREDD в соответствии с его спецификацией (написанной на Openapi3 с учетом болезненных ограничений поддержки со стороны Дредда, рассматриваемых ). Нет, у меня есть одна конечная точка, которая выдает CSV-данные, если заголовок Accept установлен так.

    '/my-endpoint':
        summary: ...
        description: ...
        get:
 #          parameters:
 #              - 
 #                  in: header
 #                  name: Accept
 #                  description: "Response format: application/json or text/csv"
 #                  example: "text/csv"
            responses:
                '200':
                    description: ...
                    content:
                        text/csv:
                            schema:
                                type: string
                            example:
                                summary: 'csv table'
                                value: 'cell1, cell2'

Когда я запускаю тест с Dredd, тест завершается неудачно с


expected: 
headers: 

body: 
[
  {
    "key": "summary",
    "value": "csv table"
  },
  {
    "key": "value",
    "value": "cell1, cell2"
  }
]
statusCode: 200

Ясно что-то не так поняли, и Дредд ожидает, что все еще JSON. Также API не сказано, чтобы произвести версию CSV. Если я фиксирую в заголовке Accept в коде abvoe, я получаю тот же результат - приведенный выше результат expecetd и как фактический результат JSON версия данных my-endpoint, а также предупреждение о рекламе:

warn: API description parser warning in .../tmp/transformed.specs.yml: 'Parameter Object' 'name' in location 'header' should not be 'Accept', 'Content-Type' or 'Authorization'

Я читаю здесь и здесь : Header parameters named Accept, Content-Type and Authorization are not allowed. To describe these headers, use the corresponding OpenAPI keywords - но что это? Согласно этой и этой странице, кажется, достаточно указать ответ данного типа, но этого явно недостаточно, чтобы Dredd выдал такой заголовок.

1 Ответ

1 голос
/ 17 февраля 2020

Вы получили ошибку, потому что значение ключа example должно быть буквальным примером значения. Так что в вашем случае он рассматривается как объект со свойствами summary и value.

Измените ваше определение на:

                    content:
                        text/csv:
                            schema:
                                type: string
                            example: 'cell1, cell2'

Или, если вы хотите предоставить сводку / описание например, используйте examples вместо:

                    content:
                        text/csv:
                            schema:
                                type: string
                            examples:
                                csv table:
                                    summary: A CSV table with 2 cells
                                    value: 'cell1, cell2'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...