con java json rest rest-assured

java - con - Está seguro. ¿Es posible extraer valor de la solicitud json?



javascript function jstl (4)

Encontré la respuesta :)

Utilice JsonPath o XmlPath (en caso de que tenga XML) para obtener datos del cuerpo de la respuesta.

En mi caso:

JsonPath jsonPath = new JsonPath(responseBody); int user_id = jsonPath.getInt("user_id");

Recibo respuesta de esta manera:

Response response = expect().statusCode(200).given().body(requestBody).contentType("application/json") .when().post("/admin"); String responseBody = response.getBody().asString();

Tengo un json en respuesta. Cuerpo:

{"user_id":39}

¿Puedo extraer a cadena usando el método de rest-assured solo este valor = 39?


También puede hacer esto si solo está interesado en extraer el "user_id":

String userId = given(). contentType("application/json"). body(requestBody). when(). post("/admin"). then(). statusCode(200). extract(). path("user_id");

En su forma más simple, se ve así:

String userId = get("/person").path("person.userId");



Hay varias formas. Yo personalmente uso los siguientes:

extracción de valor único:

String user_Id = given(). when(). then(). extract(). path("user_id");

trabaje con la respuesta completa cuando necesite más de uno:

Response response = given(). when(). then(). extract(). response(); String userId = response.path("user_id");

extrae uno usando JsonPath para obtener el tipo correcto:

long userId = given(). when(). then(). extract(). jsonPath().getLong("user_id");

El último es realmente útil cuando quiere hacer coincidir el valor y el tipo, es decir,

assertThat( when(). then(). extract(). jsonPath().getLong("user_id"), equalTo(USER_ID) );

La documentación asegurada por el resto es bastante descriptiva y completa. Hay muchas maneras de lograr lo que está preguntando: https://github.com/jayway/rest-assured/wiki/Usage