目前使用邮递员我必须向API_URL /登录发送请求,我传递用户名和密码,作为回报我得到令牌见下文:
示例请求:
/login
POST
Body
{
"username": "admin",
"password": "admin"
}
Return
{
"token": "1234-56789-..."
}
你能告诉我我该怎么做..我尝试过使用.parameters,但它说不赞成......
答案 0 :(得分:2)
您必须知道响应的架构是什么。例如,如果输出如此:
{
"success": true,
"authorization_token": "eyJ0eXAiOiJCZWFy...",
"refresh_token": "eyJ0eXAiOiJCZWFyZ...",
"type": "Bearer",
...
}
了解架构后,您可以提取整个输出并通过它进行解析,如下所示:
import io.restassured.response.Response;
Response response =
RestAssured.given().
header("Content-Type", "application/json").
body(loginPayload).
when().
post("/login").
then().
log().ifError().
statusCode(200).
contentType("application/vnd.api+json").
body("$", hasKey("authorization_token")). //authorization_token is present in the response
body("any { it.key == 'authorization_token' }", is(notNullValue())). //authorization_token value is not null - has a value
extract().response();
然后可以将身份验证令牌设置为字符串变量
String auth_token = response.path("authorization_token").toString();
提取物()响应();返回整个响应,但您可以将其更改为extract()。path(“authorization_token”)仅用于单个字符串
答案 1 :(得分:1)
REST Assured支持将Java对象映射到JSON或从JSON映射。您只需要在类路径上使用JSON解析器,例如Jackson或Gson。
首先定义一个表示用户凭据的类:
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/1.2.1/lodash.min.js"></script>
然后定义类来表示身份验证令牌:
class Credentials {
private String username;
private String password;
// Getters and setters
}
最后执行交换令牌凭据的请求:
class AuthenticationToken {
private String token;
// Getters and setters
}