АДКАЗНЫЯ Прыклады: GET, POST, PUT, PATCH, DELETE

У гэтым паведамленні тлумачыцца, як адпраўляць запыты API HTTP з выкарыстаннем REST-запэўніваемай бібліятэкі. Прыклады ахопліваюць GET, POST, PUT, PATCH і DELETE запыты.



Запыты HTTP API з гарантыяй адпачынку

АТРЫМАЦЬ запыт

Запыт HTTP GET выкарыстоўваецца для атрымання рэсурсу з сервера.

У наступным прыкладзе выкарыстоўваецца get() метад з гарантаванай REST бібліятэкі.


Прыклад:

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, мы выкарыстоўваем queryParam метад:


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 запыт

Запыт HTTP POST выкарыстоўваецца для размяшчэння дадзеных або стварэння рэсурсу на серверы.

Для адпраўкі запыту POST у гарантыі REST мы выкарыстоўваем post() метад:

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 = '{ ' +

' 'title': 'foo', ' +

' 'body': 'bar', ' +

' 'userId': '1' }';
@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 Запыт

Запыт PUT абнаўляе рэсурс, але патрабуе поўнай карыснай нагрузкі JSON.


Для адпраўкі запыту PUT з упэўненасцю REST мы выкарыстоўваем put() метад:

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 = '{ ' +

' 'title': 'foo', ' +

' 'body': 'baz', ' +

' 'userId': '1', ' +

' 'id': '1' }';
@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 абнаўляе рэсурс, але патрабуе толькі поле, якое абнаўляецца ў карыснай нагрузцы:

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 = '{ ' +

' 'title': 'bax' }';
@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 выкарыстоўваецца для выдалення рэсурсу з сервера.


Каб адправіць запыт DELETE з упэўненасцю REST, мы выкарыстоўваем delete() метад:

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());
} }