Response handling examples
In this topic, we'll examine a couple of HTTP response handling examples. To try examples yourself, explore the auth-requests and test-responses requests collections.
Checking response headers, body, and content type
In this example, we'll create several tests to verify the following:
The request is executed successfully, that is, the response status is 200.
Headers are received within the response body.
The response's content type is application/json.
To create a test, we call the test
method of the client object. Inside the test, we can assert a specific condition by calling the assert
method of the client
object and refer to various properties of the response object to validate them.
### Check response status, headers, and content-type
GET https://httpbin.org/get
> {%
client.test("Request executed successfully", function() {
client.assert(response.status === 200, "Response status is not 200");
});
client.test("Headers option exists", function() {
client.assert(response.body.hasOwnProperty("headers"), "Cannot find 'headers' option in response");
});
client.test("Response content-type is json", function() {
var type = response.contentType.mimeType;
client.assert(type === "application/json", "Expected 'application/json' but received '" + type + "'");
});
%}
Working with environment variables
In this example, we'll capture a value from the received response into an environment variable, which can be then used in subsequent requests.
The first request involves a response handler script, which saves an authentication token from the received response body into the auth_token
variable under client.global. To achieve this, we use the client.global.set(VariableName, VariableValue)
construction.
POST https://httpbin.org/post
Content-Type: application/json
{
"token": "my-secret-token"
}
//Saving a variable
> {%
client.global.set("auth_token", response.body.json.token);
%}
note
Due to the httpbin POST implementation, we use
response.body.json.token
to retrieve the token. Depending on the actual web service you are interacting with, the response structure may differ, and you may need to use a different construction, for example,response.body.token
.
After the request is executed, the auth_token
variable can be accessed from both subsequent requests as {{auth_token}}
and response handler scripts by means of the client.global.get("auth_token")
construction.
//Accessing a variable
GET https://httpbin.org/headers
Authorization: Bearer {{auth_token}}
To obtain a value from a response header, use the valueOf
method of the headers object. If several headers with the same name are received (which is a common case for the Set-Cookie header), use the valuesOf
method instead. This will return an array of all response header values.
POST https://httpbin.org/cookies
//Saving a cookie from the first Set-Cookie header
> {%
client.global.set("my_cookie", response.headers.valuesOf("Set-Cookie")[0]);
%}