我正在使用Dredd来测试我编写的API。它工作正常,直到我尝试改变资源中的动作uri。当我有一个表格的行动
## Retrieve Task [GET /task/{id}]
它向附加]
的Drakov发送请求。这个Drakov服务器正在运行蓝图文档。
Drakov 0.1.16 Listening on port 8090
[LOG] GET /task/myid]
[LOG] DELETE /task/myid]
[LOG] GET /task/myid]
您可以看到此请求最后有一个额外的]
。
这是我的蓝图。它是Api Blueprint examples:
中示例的一个子集FORMAT: 1A
# Advanced Action API
A resource action is – in fact – a state transition. This API example demonstrates an action - state transition - to another resource.
## API Blueprint
# Tasks [/tasks/tasks{?status,priority}]
+ Parameters
+ status `test` (string)
+ priority `1` (number)
## Retrieve Task [GET /task/{id}]
This is a state transition to another resource
+ Parameters
+ id: `myid` (string)
+ Response 200 (application/json)
{
"id": 123,
"name": "Go to gym",
"done": false,
"type": "task"
}
我做错了什么?
答案 0 :(得分:5)
您的API蓝图有多处错误。例如,
askstring
......应该是:
+ Parameters
+ status `test` (string)
+ priority `1` (number)
此外,您正在使用URI模板+ Parameters
+ status: `test` (string)
+ priority: `1` (number)
定义资源Tasks
,然后您尝试使用不同的URI模板为资源定义/tasks/tasks{?status,priority}
操作。这令人困惑。
我尝试创建一个示例API蓝图(保存为GET
),如下所示:
sample-blueprint.md
然后我在一个终端中启动了一个Drakov服务器:
FORMAT: 1A
# My API
## Task [/task/{id}]
### Retrieve Task [GET]
+ Parameters
+ id: `123` (string)
+ Response 200 (application/json)
{
"id": 123,
"name": "Go to gym",
"done": false,
"type": "task"
}
然后我尝试运行Dredd:
drakov -f *.md
一切都正确通过:
dredd sample-blueprint.md http://localhost:3000
这是你最初想要实现的吗?