如何在休息API中使用放心获取授权令牌?

时间:2017-04-04 07:40:48

标签: rest-assured

postman中,我们可以轻松获取令牌,可以在another api header中使用authorization。如何使用放心的方式在rest API中获取授权令牌?有可能吗?

{
  "status_code": 201,
  "status": "success",
  "results": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImJpdGh5QGdtYWlsLmNvbSIsImVtYWlsIjoiYml0aHlAZ21haWwuY29tIiwidXNlcl9pZCI6MywiZXhwIjoxNDkxODk2MjkwfQ.obAP1k8ObcyxLTHjQ3fP-9otvQAZNC0wM3TVoBXDEmE",
    "user_type": "employer"
  },
  "errors": null,
  "message_code": "sc_vw_user_login_1",
  "message": "Login successful."
}

2 个答案:

答案 0 :(得分:0)

除上述内容外,如果您还需要提及grant_type以及简单凭据,则可以使用以下示例来实现相同目的。下面的示例假设您使用的是client_credentials grant_type。您也可以将其放在Junit测试的@Before函数中

String response =
            given().port(9090)
                .auth().basic("clientId", "secret")
                .basePath("/auth")
                .contentType("multipart/form-data")
                .multiPart("grant_type", "client_credentials")
                .when()
                .post("/oauth/token")
                .asString();



    JsonPath jsonPath = new JsonPath(response);
    accessToken = jsonPath.getString("access_token");

答案 1 :(得分:-2)

正如Olaia所说,您需要阅读有关如何提出有关堆栈溢出问题的文档。

无论如何要回答你的问题,你可以参考以下步骤

`String response =
            given()
                .parameters("username", username, "password", password)
                .auth()
                .preemptive()
            .when()
                .post("/oauth/token")
                .asString();

    JsonPath jsonPath = new JsonPath(response);
    accessToken = jsonPath.getString("access_token");`

然后在随后的请求中,您将在标题

中传递相同的accessToken
given()
        .auth().oauth2(accessToken)
        .contentType(ContentType.JSON)
        .accept(ContentType.JSON)
    .expect()...