Je reçois une réponse de cette façon:
Response response = expect().statusCode(200).given().body(requestBody).contentType("application/json")
.when().post("/admin");
String responseBody = response.getBody().asString();
J'ai un json dans responseBody:
{"user_id":39}
Pourrais-je extraire en chaîne en utilisant la méthode de repos-assuré uniquement cette valeur = 39?
Vous pouvez aussi faire comme ceci si vous voulez extraire le "user_id":
String userId =
given().
contentType("application/json").
body(requestBody).
when().
post("/admin").
then().
statusCode(200).
extract().
path("user_id");
Dans sa forme la plus simple, il ressemble à ceci:
String userId = get("/person").path("person.userId");
Il y a plusieurs façons. Personnellement, j'utilise les suivants:
extraire une valeur unique:
String user_Id =
given().
when().
then().
extract().
path("user_id");
travaillez avec la réponse complète lorsque vous en avez besoin de plusieurs:
Response response =
given().
when().
then().
extract().
response();
String userId = response.path("user_id");
en extraire un en utilisant JsonPath pour obtenir le bon type:
long userId =
given().
when().
then().
extract().
jsonPath().getLong("user_id");
Le dernier est vraiment utile lorsque vous voulez faire correspondre la valeur et le type i.e.
assertThat(
when().
then().
extract().
jsonPath().getLong("user_id"), equalTo(USER_ID)
);
La documentation repos-assurée est assez descriptive et complète. Il y a plusieurs façons de réaliser ce que vous demandez: https://github.com/jayway/rest-assured/wiki/Usage
Pour sérialiser la réponse dans une classe, définissez la classe cible
public class Result {
public Long user_id;
}
Et la réponse de la carte à cela:
Response response = given().body(requestBody).when().post("/admin");
Result result = response.as(Result.class);
Vous devez avoir Jackson ou Gson dans le classpath car la documentation indique: http://rest-assured.googlecode.com/svn/tags/2.3.1/apidocs/com/jayway/restassured/response/ResponseBodyExtractionOptions.html as (Java.lang.Class)
JsonPath jsonPathEvaluator = response.jsonPath();
return jsonPathEvaluator.get("user_id").toString();