Question

I'm writing some RAML in an API designer and I have the following code:

/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: 

The parser is throwing an error at /{slug} because it thinks that I'm trying to use it as a property of the get: method. However, /{slug} needs to be indented to make it subordinate to /tags.

Is there a way in RAML (or YAML, since RAML is supposed to be an instance of YAML), to mark the end of a map? Or do you have any other suggestions?

Était-ce utile?

La solution

RAML doesn't (AFAIK) support explicit termination of maps, but we also don't need that to solve your problem :-).

Since in YAML the whitespace is semantic, what's happening is that your GET method is currently indented such that it's a method on the /users/{id} level, so even though it looks like /{slug} is subordinate to tags, it thinks it is in the definition of /users/{id} Really, we should probably throw an error here, since the method definition comes after you've defined a sub-resource (thanks for finding this case).

To solve, all you need to do is indent your description and get definition for /users/{id}/tags one additional level, and it should all parse fine. Updated RAML is below.

/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: 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top