如何使用放心的方式在rest API中获取授权令牌?可能吗?

时间:2017-07-19 10:58:12

标签: rest token

目前使用邮递员我必须向API_URL /登录发送请求,我传递用户名和密码,作为回报我得到令牌见下文:

示例请求:

/login
POST
Body
{
    "username": "admin",
    "password": "admin"
}
Return
{
    "token": "1234-56789-..."
}

你能告诉我我该怎么做..我尝试过使用.parameters,但它说不赞成......

2 个答案:

答案 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
}