REST Assured Tutorial 20 – How to Send a JSON/XML File as Payload to Request

As a part of End to End REST Assured Tutorial , in this post We will learn about “How to send a JSON/XML file as payload to request in Rest Assured”.

Suppose you have a request payload (JSON or XML) in a file and you required to directly send that file as a payload to request in stead of reading it first and then passing. Sending file as a payload directly is a good idea when you have static payloads or minimal modification.

“body()” method of RequestSpecification interface is a overloaded method to allow you to pass payload in different ways. We will use body() method which accepts “File” as argument. Javadoc is below:-

Step 1:- Create a .json file and write payload in that. Keep the file in “src/test/resources” folder.

Step 2 :- Create a File in Java using “File” and pass to body() method.

package DifferentWaysOfPassingPayloadToRequest;

import java.io.File;

import org.hamcrest.Matchers;
import org.testng.annotations.Test;

import io.restassured.RestAssured;
import io.restassured.http.ContentType;

public class PassFileAsPayload {
        
        @Test
        public void passFileAsPayload()
        {
                // Creating a File instance 
                File jsonDataInFile = new File("src/test/resources/Payloads/AuthPayload.json");
                
                //GIVEN
                RestAssured
                    .given()
                                .baseUri("https://restful-booker.herokuapp.com/auth")
                                .contentType(ContentType.JSON)
                                .body(jsonDataInFile)
                // WHEN
                        .when()
                                .post()
                                // THEN
                        .then()
                                .assertThat()
                                .statusCode(200)
                                .body("token", Matchers.notNullValue())
                                .body("token.length()", Matchers.is(15))
                                .body("token", Matchers.matchesRegex("^[a-z0-9]+$"));
        }

}


Step 1:- Create a .xml file and write payload in that. Keep the file in “src/test/resources” folder.

Step 2:- Create a File in Java using “File” and pass to body() method.

@Test
        public void passXMLFileAsPayload()
        {
                // Creating a File instance 
                File jsonDataInFile = new File("src/test/resources/Payloads/AuthPayload.xml");
                
                //GIVEN
                RestAssured
                    .given()
                                .baseUri("https://restful-booker.herokuapp.com/auth")
                                // Since I am passing payload as xml. Anyway it is optional as Rest Assured automatically identifies.
                                .contentType(ContentType.XML)
                                .body(jsonDataInFile)
                // WHEN
                        .when()
                                .post()
                                // THEN
                        .then()
                                .assertThat()
                                .statusCode(200);
        }

You can clone/download example repo here.

If you have any doubt, feel free to comment below.If you like my posts, please like, comment, share and subscribe.#ThanksForReading

#HappyLearning