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");
Para serializar la respuesta en una clase, defina la clase objetivo
public class Result {
public Long user_id;
}
Y la respuesta del mapa:
Response response = given().body(requestBody).when().post("/admin");
Result result = response.as(Result.class);
Debe tener a Jackson o Gson en el classpath como lo indica la documentación: http://rest-assured.googlecode.com/svn/tags/2.3.1/apidocs/com/jayway/restassured/response/ResponseBodyExtractionOptions.html#as ( java.lang.Class)
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