😮

API Blueprintでパスパラメータの指定方法がついに判明

2023/06/23に公開

はじめに


api blueprintでパスパラメータの指定方法が分からなかったのですが分かりましたのでビボります(備忘)。

NGパターン

下のように、パスパラメータを、/todo/{id}で指定してます。

# ToDo [/todo/{id}]

## ToDo取得 [GET]

* ユーザーの特定IDのToDoを取得する。

+ Request
    + Headers
        Authorization: Bearer <token>

が、/todo/になってしまいます。

公式ドキュメント見てみる

api blueprint Docs(https://apiblueprint.org/documentation/examples/07-parameters.html)

あれ、やっぱりパスパラメータを、{id}で指定でいいんじゃないの。
なんで表示されないんだろう?

# Group Messages
Group of all messages-related resources.

## My Message [/message/{id}]
Here we have added the message `id` parameter as an 
[URI Template variable](http://tools.ietf.org/html/rfc6570) in the Message
resource's URI. Note the parameter name `id` is enclosed in curly brackets. We
will discuss this parameter in the `Parameters` section below, where we will
also set its example value to `1` and declare it of an arbitrary 'number' type.

+ Parameters

    + id: 1 (number) - An unique identifier of the message.

### Retrieve a Message [GET]

OKパターン

Parametersを書いてみました。

# ToDo [/todo/{id}]

## ToDo取得 [GET]

* ユーザーの特定IDのToDoを取得する。

+ Parameters
    + id: 1 (number) - An unique identifier of the message.

+ Request
    + Headers
        Authorization: Bearer <token>

出ました。

書き忘れというか、Parametersには、クエリパラメータを書くのだと思い込んでいたんですよね。思い込みは良くないですね。

ちなみに、Parametersの名前が違うと、/todo/になってしまいます。

# ToDo [/todo/{id}]

## ToDo取得 [GET]

* ユーザーの特定IDのToDoを取得する。

+ Parameters
    + xxx: 1 (number) - An unique identifier of the message.

+ Request
    + Headers
        Authorization: Bearer <token>

なるほど〜ちゃんと見てるんですね。

最後に

あまり記法分かっていなくても書けてしまう便利ツールなので、何かできない時に困りますね。同じ問題で困っている方の一助になれば幸いです。
ちなみに、
以下の位置に、文章入れたいのですが入れれずに困ってます。
お分かりの方いたら教えてください。

コード

## ToDo取得 [GET]

* ユーザーの特定IDのToDoを取得する。

+ Parameters
    + id: 1 (number) - An unique identifier of the message.

+ Request
    + Headers
        Authorization: Bearer <token>

+ Response 400 (application/json)
文章入れたいのに入れられない1
    + Body
        {
            "errors": [
                {
                    "message": "Bad Request",
                    "code": 400
                }
            ]
        }
文章入れたいのに入れられない2

参考

Discussion