Dredd将尾随方括号传递给API

时间:2015-10-24 17:04:49

标签: apiblueprint dredd

我正在使用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"
        }

我做错了什么?

1 个答案:

答案 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

这是你最初想要实现的吗?