Я тестирую свой 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 выдал такой заголовок.