Patch request using REST Assured

Profile picture for user devraj

The HTTP methods PATCH can be used to update partial resources. For instance, when you only need to update one field of the resource, PUTting a complete resource representation might be cumbersome and utilizes more bandwidth.

Also, the PUT method is idempotent. PUTting the same data multiple times to the same resource, should not result in different resources, while POSTing to the same resource can result in the creation of multiple resources.

A PATCH is not necessarily idempotent, although it can be. Contrast this with PUT; which is always idempotent. The word "idempotent" means that any number of repeated, identical requests will leave the resource in the same state. For example if an auto-incrementing counter field is an integral part of the resource, then a PUT will naturally overwrite it (since it overwrites everything), but not necessarily so for PATCH.

When a client needs to replace an existing Resource entirely, they can use PUT. When they're doing a partial update, they can use HTTP PATCH.

public class ReqRes 
{
	public static String id = "2";

	@BeforeClass
	public void setup()
	{
	    RestAssured.baseURI = "https://reqres.in/";
        RestAssured.basePath = "api";
	}

	/*Patch request example*/
	@Test(enabled=true)
	public void patchExample()
	{
		Response res = 
				given()
					.header("Content-Type","application/json")
					.body("{\n" + 
							"    \"name\": \"Tarun Goswami1\",\n" + 
							"    \"job\": \"QA\"\n" + 
							"}")
				.when()	
					.patch("/users/2")
				.then()
					.statusCode(200)
					.extract().response();
		
		System.out.println(res.body().prettyPrint());				
	}
}