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(或 YAML,因为 RAML 应该是 YAML 的一个实例)中有没有办法标记地图的结尾?或者你有什么其他建议吗?

4

1 回答 1

3

RAML 不(AFAIK)支持显式终止地图,但我们也不需要它来解决您的问题:-)。

因为在 YAML 中空格是语义的,所以发生的事情是你的 GET 方法当前是缩进的,因此它是 /users/{id} 级别的方法,所以即使它看起来像 /{slug} 从属于标签,它认为它在 /users/{id} 的定义中真的,我们应该在这里抛出一个错误,因为方法定义是在你定义了一个子资源之后出现的(感谢你找到这个案例)。

要解决这个问题,您需要做的就是缩进您的描述并获得 /users/{id}/tags 的定义一个额外的级别,它应该都能正常解析。更新的 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 回答