我使用DREDD根据它的规范(考虑用Openapi3编写,painfull limitations of Support by Dredd considered)来测试我的Api。不,我有一个端点,如果设置了Accept-header,它就会生成CSV-data。
'/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
显然,有些地方被误解了,Dredd希望JSON仍然存在。此外,API也不会被告知生成CSV版本。如果我在代码abvoe的Accept头中提交,我会得到完全相同的结果-上面的expecetd结果,以及作为实际结果的my- commit data的JSON版本,以及ad警告:
warn: API description parser warning in .../tmp/transformed.specs.yml: 'Parameter Object' 'name' in location 'header' should not be 'Accept', 'Content-Type' or 'Authorization'
我读过here和here:Header parameters named Accept, Content-Type and Authorization are not allowed. To describe these headers, use the corresponding OpenAPI keywords
--但它们是什么呢?根据this和this页面的说法,指定给定类型的响应似乎就足够了,但这显然不足以告诉Dredd生成这样的头。
发布于 2020-02-17 22:43:23
您得到了一个错误,因为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'
https://stackoverflow.com/questions/60264392
复制相似问题