无法让 DREDD 将 schema.example 用作 POST 正文
Can't make DREDD to use the schema.example as POST body
我正在尝试使用 Dredd 来测试我的 OpenAPI 指定 API 但我无法让 Dredd 识别我的 POST 的 JSON 正文请求,它一直在发送我的 POST 请求,但主体是空的。
根据 Dredd 的 documentation,它使用 schema.example 作为 "in":"body" 而这正是我正在做的,但 Dredd 一直在发出空体的 POST。
我尝试了 OpenAPI3 和 OpenAPI2,结果相同。我在 OpenAPI2 规范中的 POST 操作如下所示:
/availableCounters:
post:
summary: Get the available counters for a specified time range
description: This API returns the available counters for the specific time range requested.
responses:
'200':
description: OK
schema:
type: object
properties:
properties:
type: array
items:
$ref: '#/definitions/property_spec'
'400':
description: 'Could not retrieve available Counters: ${error}'
parameters:
- required: true
name: body
in: body
schema:
example: {"searchSpan": {"from": {"dateTime": "2019-01-20T21:50:37.349Z"},"to": {"dateTime": "2019-01-22T21:50:37.349Z"}}}
type: object
properties:
searchSpan:
$ref: '#/definitions/from_to'
但是当我使用 Dredd 测试这个 OpenAPI 定义时,对于这个操作,它没有按应有的方式发送正文:
request:
method: POST
uri: /availableCounters
headers:
User-Agent: Dredd/8.0.0 (Windows_NT 10.0.17134; x64)
body:
expected:
headers:
statusCode: 200
bodySchema: {"type":"object","properties":{"properties":{"type":"array","items":{"$ref":"#/definitions/property_spec"}}},"definitions":{"property_spec":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["Double","String","DateTime"]}}}}}
actual:
statusCode: 400
headers:
connection: close
date: Tue, 12 Feb 2019 23:22:09 GMT
content-type: text/plain; charset=utf-8
server: Kestrel
content-length: 96
bodyEncoding: utf-8
body:
Could not retrieve available Counters: TypeError: Cannot read property 'searchSpan' of undefined
我试过同时使用 schema.example 和 schema.x-示例,但 Dredd 不会发送正文。正如我之前所说,我也尝试了 OpenAPI3,我得到了相同的结果。
如有任何帮助,我们将不胜感激。
这个问题是老问题了,但问题依然存在:如果 consumes 字段缺失,Dredd 似乎忽略了 body 参数。
所以尝试:
/availableCounters:
post:
summary: Get the available counters for a specified time range
consumes:
- application/json
[...]
我正在尝试使用 Dredd 来测试我的 OpenAPI 指定 API 但我无法让 Dredd 识别我的 POST 的 JSON 正文请求,它一直在发送我的 POST 请求,但主体是空的。 根据 Dredd 的 documentation,它使用 schema.example 作为 "in":"body" 而这正是我正在做的,但 Dredd 一直在发出空体的 POST。
我尝试了 OpenAPI3 和 OpenAPI2,结果相同。我在 OpenAPI2 规范中的 POST 操作如下所示:
/availableCounters:
post:
summary: Get the available counters for a specified time range
description: This API returns the available counters for the specific time range requested.
responses:
'200':
description: OK
schema:
type: object
properties:
properties:
type: array
items:
$ref: '#/definitions/property_spec'
'400':
description: 'Could not retrieve available Counters: ${error}'
parameters:
- required: true
name: body
in: body
schema:
example: {"searchSpan": {"from": {"dateTime": "2019-01-20T21:50:37.349Z"},"to": {"dateTime": "2019-01-22T21:50:37.349Z"}}}
type: object
properties:
searchSpan:
$ref: '#/definitions/from_to'
但是当我使用 Dredd 测试这个 OpenAPI 定义时,对于这个操作,它没有按应有的方式发送正文:
request:
method: POST
uri: /availableCounters
headers:
User-Agent: Dredd/8.0.0 (Windows_NT 10.0.17134; x64)
body:
expected:
headers:
statusCode: 200
bodySchema: {"type":"object","properties":{"properties":{"type":"array","items":{"$ref":"#/definitions/property_spec"}}},"definitions":{"property_spec":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["Double","String","DateTime"]}}}}}
actual:
statusCode: 400
headers:
connection: close
date: Tue, 12 Feb 2019 23:22:09 GMT
content-type: text/plain; charset=utf-8
server: Kestrel
content-length: 96
bodyEncoding: utf-8
body:
Could not retrieve available Counters: TypeError: Cannot read property 'searchSpan' of undefined
我试过同时使用 schema.example 和 schema.x-示例,但 Dredd 不会发送正文。正如我之前所说,我也尝试了 OpenAPI3,我得到了相同的结果。
如有任何帮助,我们将不胜感激。
这个问题是老问题了,但问题依然存在:如果 consumes 字段缺失,Dredd 似乎忽略了 body 参数。
所以尝试:
/availableCounters:
post:
summary: Get the available counters for a specified time range
consumes:
- application/json
[...]