springboot和java8:有没有一种动态构建字符串的方法?

v1l68za4  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(347)

有没有办法在Java8和/或SpringBoot中动态构建一个字符串?我正在尝试用从rest服务调用收到的参数构建一个url,这个服务有多个可选的过滤器,我可以使用pseudo-ai方法用多个if-else验证所有内容,但我认为这不是最好的方法。这个url是对jira restapi的调用,因此语法是独特的。
我想避免的是

and = "\"%20AND%20\"";    
if (param1 != null) url += param1;
if (param1 != null && param2 != null) url += param1 + and + param2;
if (param1 != null && param2 != null && param3 != null) url += param1 + and + param2 + and + param3;
if (param1 != null && param2 == null && param3 != null) url += param1 + and + param3;

我认为一定有更好的方法来实现这一点,而不是验证每个参数10次。

yzuktlbb

yzuktlbb1#

有多种解决方案可供选择:
就用一个 StringBuilder 或者简单的字符串连接来构建查询字符串
Spring UriComponentsBuilder javadoc提供了一种更结构化的方式来构建查询字符串,您可能更熟悉基于jpa的解决方案
使用 RestTemplates 允许传递有条件填充的 Map 表示您的请求参数
Spring更新 WebClient 类还支持使用uri生成器在get上设置参数,如下所示:

WebClient c = WebClient.create();
c.get().uri(uriBuilder -> uriBuilder
    .queryParam("param1", "value")
    .queryParam("param2", "value2")
    .build()
).retrieve();

相关问题