Search code examples
restrestful-architectureapiblueprintapiary.ioapiary

Apiary.io - multiple responses (200) with different parameters


I am trying to get different responses passing different parameters but something is not working.

This is my API:

## Question [/questions/{question_id}]

A Question object has the following attributes:

+ Parameters
    + question_id: `1` (number, required) - ID of the Question in form of an integer

### View a Questions Detail [GET]

+ Request

+ Header

    X-Custom-Header : 1

+ Response 200 (application/json)

        {
            "id": "1",
            "name": "Marco"
        }


+ Request

+ Header

    X-Custom-Header : 2

+ Response 200 (application/json)

        {
            "id: "2",
            "name": "Lucas"
        }

But when calling /questions/1 or /questions/2 the response is always the same:

{
    "id": "1",
    "name": "Marco"
}

What is wrong?

Thank you


Solution

  • Nothing is wrong with your blueprint. I am afraid the Apiary Mock is rather simplistic and always returns the first response specified (content-negotiation permitting) as default.

    See "Invoking non-default responses" at Apiary http://support.apiary.io/knowledgebase/articles/117119-handling-multiple-actions-on-a-single-resource to see how to invoke (on demand) another response.

    Also note there is a proposed syntax in API Blueprint to explicitly state what values of parameters are tied to a particular response – https://github.com/apiaryio/api-blueprint/issues/58

    However whether will Apiary's mock take benefit of this is unclear at the moment.