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:-

Sending a .json file as a payload

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]+$"));
	}

}


Sending a .xml file as a payload

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

You can find all Selenium related post here.
You can find all API manual and automation related posts here.
You can find frequently asked Java Programs here.

5 thoughts on “REST Assured Tutorial 20 – How to Send a JSON/XML File as Payload to Request”

  1. Hi! I’m new on automation and rest assured… I’m facing the very same situation that you stated here: pass a json file in the body of rest assured. So I did exactly how you mention and I’m getting error 400 because it’s not sending the content, but the path of the file as a string.
    Also, I downloaded your project on GIT and when I try to run the test of this example, and it opens another random class and the test is not executed..
    I really don’t understand why it isn’t working.. 🙁

  2. can you please let me know how can I pass xml attribute value like for username attribute,you have admin value which I want to pass via testdata as variable (meaning xml format is same but value getting change based on requimrnt )…my testdata file is reading data in json form.

    1. Hi Amod , Could you make a video for below scenario :
      Update value of key for couple for parameter run time in json file while using POST request payload in rest assured

Leave a Reply

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