当前位置: 首页 > 知识库问答 >
问题:

如何在静态中准备动态请求?

洪星文
2023-03-14

我是新手,请放心。目前,我正在使用放心的API自动化。我有以下方案要处理

我们有两个 API(例如:API1、API2),API1 会给出用户详细信息的列表。我需要将这些详细信息作为第二个 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请求。

共有2个答案

鲁成天
2023-03-14

在我的情况下,我有两个vId(1

Response response = given().header("Content-Type", "application/json")
                   .param("name", Name).param("vIds", vId)
                   .when().get(EndPoint).then()
                   .extract().response();   
栾和玉
2023-03-14

我不知道你是否喜欢POJO方法,但就个人而言,这是最简单的方法。

注:

  • 您可以提取静态类来支持类,不需要它必须在这里
  • 我使用Lombok和Jackson作为外部库
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");
    }
}
 类似资料:
  • 使用卡桑德拉准备语句时,将字段与静态值绑定是否有任何好处? 例如,即使我总是使用静态值“Active”,status是否也应该有一个bind变量?如果是,为什么? 更新用户设置status='Active',其中user_id=:userid

  • 我生成SQL语句的代码工作正常-但是我在为$stmt生成字符串时遇到了一个问题-

  • 我们都知道,我们注册广播接收机有两种类型 动态注册 但我的疑问是什么时候我们需要使用,什么时候我们需要使用?

  • 我有以下java代码: 我的问题如下:我收到一个文本和一种语言,我必须检查该文本是否仅使用该语言的有效字母字符书写。我的代码如下: 这很好,也很有效,但随着我在应用程序中添加语言,我将不得不在交换机中添加越来越多的案例。 我想知道在中是否有一种方法可以动态命名一个静态嵌套类,比如: 所以我上面的代码可能是这样的: 谢谢,如果这是超级简单的事情,我很抱歉。 我是一名开发人员,正在学习。

  • 问题内容: 在我的数据库的多个地方,开发人员使用了动态sql而不是静态sql。他们说这是为了提高性能。有人可以告诉我动态sql是否真的可以提高存储过程或plsql块的性能吗? 哪个执行速度更快,为什么? 1。 2。 问题答案: 您的示例代码非常简单,几乎没有什么区别,但是在那种情况下,静态版本最有可能执行得更好。 使用动态SQL来提高性能的主要原因是,当SQL语句发生重大变化时- 例如,您可以根据

  • 问题内容: 我正在构建Java Web应用程序,并且我讨厌传统的“代码-编译-部署-测试”周期。我想输入一个微小的更改,然后立即查看结果,而无需编译和部署。 幸运的是,码头很适合这样做。这是一个纯Java Web服务器。它带有一个非常不错的maven插件,可让您直接从构建树中启动Jetty阅读- 无需打包war文件或部署。它甚至具有scanInterval设置:将其设置为非零值,它将监视您的Jav