java - 如何在休息时准备动态请求 Assured
问题描述
我是新来的放心。目前,我正在使用放心的 API 自动化。我有以下情况要处理
我们有两个 API(例如:API1、API2),API1 会给出 userdetails 的列表。我需要将这些详细信息作为第二个 API 请求的一部分发送。
API1 - 响应
[ {
"userSourceMeta" : {
"userId" : "xyz@gmail.com",
"source" : "BOX",
"organisationId" : 1,
"emailId" : "xyz@gmail.com",
"sourceUserId" : "16231222289",
"sourceTeamId" : null
},
"connectionStatus" : null
}, {
"userSourceMeta" : {
"userId" : "xyz@gmail.com",
"source" : "DROPBOX",
"organisationId" : 1,
"emailId" : "xyz@gmail.com",
"sourceUserId" : "88888222768",
"sourceTeamId" : null
},
"connectionStatus" : null
}, {
"userSourceMeta" : {
"userId" : "xyz@gmail.com",
"source" : "GDRIVE",
"organisationId" : 1,
"emailId" : "xyz@gmail.com",
"sourceUserId" : "8888873554753473",
"sourceTeamId" : null
},
"connectionStatus" : null
}]
API2 - 请求:。:在 API2 请求中,我需要发送“sourceUserId”、“source”详细信息。
{
"query": "hi",
"timeZone": "Asia/Calcutta",
"sourceFilterInfo": [
{
"sourceUserId": "16055292089",
"source": "BOX"
},
{
"sourceUserId": "88888222768",
"source": "DROPBOX"
},
{
"sourceUserId": "8888873554753473",
"source": "GDRIVE"
}
],
"contextIds": []
}
userSourceMeta 详细信息会根据用户动态变化。请根据之前的 API 响应向我建议如何准备 API2 请求。
解决方案
我不知道您是否熟悉 POJO 方法,但就个人而言,这将是最简单的方法。
笔记:
public class DynamicResponse {
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
static class SourceMeta{
private UserSource userSourceMeta;
}
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
static class UserSource {
private String userId;
private String source;
}
@Data
static class Request2 {
private String query;
private String timeZone;
private List<UserSource> sourceFilterInfo;
}
@Test
void test() {
//Save response of request 1
List<SourceMeta> res1 = given().get("http://localhost:8000/req1")
.as(new TypeRef<>() {});
// Convert response 1 to list of UserSource
List<UserSource> userSource = res1.stream()
.map(SourceMeta::getUserSourceMeta)
.collect(Collectors.toList());
// Add list of UserSource to Request 2
Request2 req2 = new Request2();
req2.setQuery("hi");
req2.setTimeZone("Asia/Calcutta");
req2.setSourceFilterInfo(userSource);
// Send the Request 2
given().log().body().contentType(ContentType.JSON)
.body(req2)
.post("http://localhost:8000/echo");
}
}
推荐阅读
- ansible - 如何调整角色依赖的ansible角色依赖中的变量?
- android - react native svg onpress 不适用于具有大 viewBox 的 android
- sql - 在 SQL Server 中创建数据透视表,如下例所示
- gitlab - 如何在 Gitlab 中按名称搜索所有组存储库中的文件
- java - Android Java底部导航栏片段未显示
- f# - 创建一个对第一个解析器的缩进敏感的 sepBy 解析器组合器
- swift - 如何将多行文本添加到 UIButton 并相应调整其高度?
- java - 整数数组集合的基准排序算法
- c++ - 为什么我无法从 USB 控制器获得任何原始输入?
- oracle - 当值是逗号分隔的字符串时,如何在 Oracle 查询中进行透视?