Charlie
Charlie

Reputation: 213

multiple responses for a given endpoint in api blueprint

Is it possible in the API Blueprint to define a set of possible responses for a given endpoint?

For example if I have a endpoint such as /movie/{id} I'd like to be able to define a set of movie records so that in the mock server I could GET /movie/1 or GET /movie/2 or GET /movie/3 and get the relevant record.

The examples I've seen all seem to define just one possible response.

Upvotes: 1

Views: 1551

Answers (3)

mudassir ahmed
mudassir ahmed

Reputation: 201

this is how you provide multiple responses in your RAML file using Mulesoft(API designer) however if you're using mocking service for testing you'll always get the example response you set for testing

/{id}:
    get:
      headers:
       Requester-Id:
        required: true
      responses:
        200:
          body:
            application/json:
              type: Account
              example:
                !include exapmle/AccountExample.raml

        400:
          body:
            application/json:
              example:
                {"message":"Error retrieving account for the provided id"}   

Upvotes: 0

Benni
Benni

Reputation: 788

You can add multiple request blocks, like this:

### Register [POST]
Registers an account

+ Request Already existing username

    + Body

            {
                "app": 3,
                "username": "already-existing-username",
                "password": "password"
            }

+ Response 200 (application/json)

    + Body

            {
                "success": false,
                "error": "The username specified is already registered to an account.",
                "error_field": "username"
            }

+ Request Invalid password

    + Body

            {
                "app": 3,
                "username": "username",
                "password": "password"
            }

+ Response 200 (application/json)

    + Body

            {
                "success": false,
                "error": "Please supply a valid password.",
                "error_field": "password"
            }

You can also find this in the official documentation

Upvotes: 2

Pavan Kumar Sunkara
Pavan Kumar Sunkara

Reputation: 3025

It's not possible to simulate this using a single action, but there is a workaround.

FORMAT: 1A

# Multi

## GET /movie/1

+ Response 200 (application/json)

        { "id": 1, "title": "First" }

## GET /movie/2

+ Response 200 (application/json)

        { "id": 2, "title": "Second" }

## GET /movie/3

+ Response 200 (application/json)

        { "id": 3, "title": "Third" }

## GET /movie/{id}

+ Parameters
    + id (required, number, `42`) ... Blah.

+ Response 200 (application/json)

        { "id": 42, "title": "First" }

Now, if you hit /movie/2, the mock server sends the appropriate response. Thanks.

Upvotes: 0

Related Questions