有没有办法在RAML中标记方法的结尾?

时间:2014-04-15 15:35:01

标签: yaml raml

我在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的一个实例)中有没有办法标记地图的结尾?或者您还有其他建议吗?

1 个答案:

答案 0 :(得分: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: