REST Assured Get HTTP Response Body

In this short tutorial on REST Assured you will learn how to get the entire HTTP Response Body when testing your RESTful Web Service Endpoint.

Web Service Endpoint Response

Let’s assume we have the following Web Service Endpoint URL and when HTTP GET request is made to this Web Service Endpoint a JSON representation of user details is returned in HTTP Response Body:

URL:

http://localhost:8080/api/users/tov5c2VC2c1RKXeM80rCtgXVmGN6Kj

JSON representation of the returned user details:

{
 "firstName":"Sergey",
 "lastName":"Kargopolov",
 "id":"tov5c2VC2c1RKXeM80rCtgXVmGN6Kj"
}

REST Assured Test Method to Display Response Body

Let’s have a look at an example of a Test method which will use REST Assured to send HTTP GET request to the above mentioned Web Service Endpoint and display the HTTP Response Body.

public class UsersAPITest {

    @Before
    public void setup() {
        RestAssured.baseURI = "http://localhost:8080/users";
    }
    
    @Test
    public void givenUrl_display_response_body() {
        
        Header authorizationHeader = new Header("Authorization", "Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZXN0OUB0ZXN0LmNvbSIsImV4cCI6MTUyNjY1NDgzMn0.Tmv4blwxuiMIZzKar6uLNOKPRDIDJ6nGBPwy6UauNi287dEl0xZCD31SUCfXhVpqJcZdY4JlX99RihAiRj-mIQ");
        RequestSpecification httpRequest = RestAssured.given();
        httpRequest.header(authorizationHeader);
        
        Response response = httpRequest.get("/tov5c2VC2c1RKXeM80rCtgXVmGN6Kj");
     	
        System.out.println("Response Body is =>  " + response.asString());
    }
}

and the result printed into a console is:

Response Body is =>  {"id":"tov5c2VC2c1RKXeM80rCtgXVmGN6Kj","firstName":"Sergey","lastName":"Kargopolov"}

Please notice a few things above the above Test method:

  • To get the Response object from the HTTP Request(RequestSpecification), I used:
    Response response = httpRequest.get("/tov5c2VC2c1RKXeM80rCtgXVmGN6Kj");
  • Then, once we have the Response object we can easily get its body as a String by either:
    response.getBody().toString()

    or

    response.asString()

    and then print it out as in my code example with System.out.println().

  • Also, notice that I had to use Header object. This is because in my Web Service Endpoint I have Spring Security configured. This is why all my RESTful Web Service endpoints are protected with JSON Web Token and require user authentication and then authorization. If your Web Service Endpoint does not require user authorization with JSON Web Token, then simply do not provide Header information.

Conclusion

In conclusion, retrieving the HTTP response body is an essential part of testing and validating the behavior of RESTful web service endpoints using REST Assured. By utilizing the appropriate REST Assured methods, developers can easily access and analyze the response body.

Unlock the potential of testing RESTful web services with our detailed tutorial available on the Testing Java Code page. Gain hands-on experience with REST Assured and master the art of writing effective tests that ensure the functionality and performance of your APIs.


Leave a Reply

Your email address will not be published. Required fields are marked *