REST-assured Examples: GET, POST, PUT, PATCH, DELETE
This post explains how to send API HTTP Requests using REST-assured library. Examples cover GET
, POST
, PUT
, PATCH
and DELETE
requests.
REST-assured HTTP API Requests
GET Request
The HTTP GET request is used to fetch a resource from a server.
The following example uses the get()
method from REST-assured library.
Example:
import io.restassured.RestAssured;
import io.restassured.http.ContentType;
import io.restassured.response.Response;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
public class RestAssuredRequests {
@BeforeAll
public static void setup() {
RestAssured.baseURI = "https://jsonplaceholder.typicode.com";
}
@Test
public void getRequest() {
Response response = given()
.contentType(ContentType.JSON)
.when()
.get("/posts")
.then()
.extract().response();
Assertions.assertEquals(200, response.statusCode());
Assertions.assertEquals("qui est esse", response.jsonPath().getString("title[1]"));
}
}
GET Request With Query Params
To send query parameters along with the GET request, we use the queryParam
method:
import io.restassured.RestAssured;
import io.restassured.http.ContentType;
import io.restassured.response.Response;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
public class RestAssuredRequests {
@BeforeAll
public static void setup() {
RestAssured.baseURI = "https://jsonplaceholder.typicode.com";
}
@Test
public void getRequestWithQueryParam() {
Response response = given()
.contentType(ContentType.JSON)
.param("postId", "2")
.when()
.get("/comments")
.then()
.extract().response();
Assertions.assertEquals(200, response.statusCode());
Assertions.assertEquals("Meghan_Littel@rene.us", response.jsonPath().getString("email[3]"));
}
}
POST Request
HTTP POST request is used to post data or create a resource on a server.
To send a POST request in REST-assured, we use the post()
method:
import io.restassured.RestAssured;
import io.restassured.response.Response;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
public class RestAssuredRequests {
private static String requestBody = "{\n" +
" \"title\": \"foo\",\n" +
" \"body\": \"bar\",\n" +
" \"userId\": \"1\" \n}";
@BeforeAll
public static void setup() {
RestAssured.baseURI = "https://jsonplaceholder.typicode.com";
}
@Test
public void postRequest() {
Response response = given()
.header("Content-type", "application/json")
.and()
.body(requestBody)
.when()
.post("/posts")
.then()
.extract().response();
Assertions.assertEquals(201, response.statusCode());
Assertions.assertEquals("foo", response.jsonPath().getString("title"));
Assertions.assertEquals("bar", response.jsonPath().getString("body"));
Assertions.assertEquals("1", response.jsonPath().getString("userId"));
Assertions.assertEquals("101", response.jsonPath().getString("id"));
}
}
PUT Request
The PUT request updates a resource but requires the full JSON payload.
To send a PUT request in REST-assured, we use the put()
method:
import io.restassured.RestAssured;
import io.restassured.response.Response;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
public class RestAssuredRequests {
private static String requestBody = "{\n" +
" \"title\": \"foo\",\n" +
" \"body\": \"baz\",\n" +
" \"userId\": \"1\",\n" +
" \"id\": \"1\" \n}";
@BeforeAll
public static void setup() {
RestAssured.baseURI = "https://jsonplaceholder.typicode.com";
}
@Test
public void putRequest() {
Response response = given()
.header("Content-type", "application/json")
.and()
.body(requestBody)
.when()
.put("/posts/1")
.then()
.extract().response();
Assertions.assertEquals(200, response.statusCode());
Assertions.assertEquals("foo", response.jsonPath().getString("title"));
Assertions.assertEquals("baz", response.jsonPath().getString("body"));
Assertions.assertEquals("1", response.jsonPath().getString("userId"));
Assertions.assertEquals("1", response.jsonPath().getString("id"));
}
}
PATCH Request
The PATCH request updates a resource but requires only the field(s) which is being updated in the payload:
import io.restassured.RestAssured;
import io.restassured.response.Response;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
public class RestAssuredRequests {
private static String requestBody = "{\n" +
" \"title\": \"bax\" \n}";
@BeforeAll
public static void setup() {
RestAssured.baseURI = "https://jsonplaceholder.typicode.com";
}
@Test
public void patchRequest() {
Response response = given()
.header("Content-type", "application/json")
.and()
.body(requestBody)
.when()
.patch("/posts/1")
.then()
.extract().response();
Assertions.assertEquals(200, response.statusCode());
Assertions.assertEquals("bax", response.jsonPath().getString("title"));
Assertions.assertEquals("1", response.jsonPath().getString("userId"));
Assertions.assertEquals("1", response.jsonPath().getString("id"));
}
}
DELETE Request
The DELETE request is used to delete a resource from a server.
To send a DELETE request in REST-assured, we use the delete()
method:
import io.restassured.RestAssured;
import io.restassured.response.Response;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
public class RestAssuredRequests {
@BeforeAll
public static void setup() {
RestAssured.baseURI = "https://jsonplaceholder.typicode.com";
}
@Test
public void deleteRequest() {
Response response = given()
.header("Content-type", "application/json")
.when()
.delete("/posts/1")
.then()
.extract().response();
Assertions.assertEquals(200, response.statusCode());
}
}