2

API デザイナーで RAML を書いていますが、次のコードがあります。

/users:
  /{id}:
    /tags:
    description: Personal tags of a user
    get:
      description: A list of the user's personal tags
      responses:
        200:
          body:
            application/json:
              example: |
                {
                  tags: [
                    {...},
                    ...
                  ]
                }

      /{slug}:
        description: A personal tag
        put: 

パーサーは、メソッド/{slug}のプロパティとして使用しようとしていると考えているため、エラーをスローしています。get:ただし、/{slug}下位にするにはインデントする必要があります/tags

RAML (または RAML は YAML のインスタンスであると想定されているため、YAML) でマップの終わりをマークする方法はありますか? または、他に何か提案はありますか?

4

1 に答える 1

3

RAMLは(AFAIK)マップの明示的な終了をサポートしていませんが、問題を解決するためにそれを必要としません:-)。

YAML では空白はセマンティックなので、/users/{id} レベルのメソッドになるように GET メソッドが現在インデントされているため、/{slug} はタグに従属しているように見えますが、これは /users/{id} の定義にあります。実際には、サブリソースを定義した後にメソッド定義が行われるため、おそらくここでエラーをスローする必要があります (このケースを見つけてくれてありがとう)。

解決するには、説明をインデントし、/users/{id}/tags の定義を 1 レベル追加するだけで、すべて正常に解析されるはずです。更新された RAML は以下のとおりです。

/users:
  /{id}:
    /tags:
      description: Personal tags of a user
      get:
        description: A list of the user's personal tags
        responses:
          200:
            body:
              application/json:
                example: |
                  {
                    tags: [
                      {...},
                      ...
                    ]
                  }
      /{slug}:
        description: A personal tag
        put: 
于 2014-04-16T04:17:36.463 に答える