Дредд передает заднюю квадратную скобку в API

Я использую Dredd для тестирования API, который я написал. Это работает нормально, пока я не попытаюсь изменить действие URI в ресурсе. Когда у меня есть действие в форме

## Retrieve Task [GET /task/{id}]

он отправляет запрос Дракову с ] прилагается. Этот сервер Drakov выполняет документ проекта.

Drakov 0.1.16      Listening on port 8090
[LOG] GET /task/myid]
[LOG] DELETE /task/myid]
[LOG] GET /task/myid]

Вы можете увидеть этот запрос имеет дополнительный ] в конце.

Это мой план. Это подмножество примера из примеров Api Blueprint:

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 ответ

Решение

Ваш API Blueprint содержит несколько ошибок. Например,

+ Parameters
  + status  `test` (string)
  + priority `1` (number)

...должно быть:

+ Parameters
  + status: `test` (string)
  + priority: `1` (number)

Также вы определяете ресурс Tasks с шаблоном URI /tasks/tasks{?status,priority} а затем вы пытаетесь определить GET действие для ресурса с другим шаблоном URI. Это сбивает с толку.

Я пытался создать образец API Blueprint (сохранен как sample-blueprint.md) как это:

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"
        }

Затем я запустил сервер Drakov в одном терминале следующим образом:

drakov -f *.md

Затем я попытался запустить Dredd:

dredd sample-blueprint.md http://localhost:3000

Все прошло правильно:

$ dredd sample-blueprint.md http://localhost:3000
info: Beginning Dredd testing...
pass: GET /task/123 duration: 42ms
complete: 1 passing, 0 failing, 0 errors, 0 skipped, 1 total
complete: Tests took 50ms

Это то, чего вы изначально хотели достичь?

Другие вопросы по тегам