Spring Boot和Java 8:是否可以动态构建字符串?

问题描述

有没有一种方法可以在Java 8和/或Spring Boot中动态构建字符串?我正在尝试使用从REST服务调用中接收到的参数来构建URL,该服务具有多个可选过滤器,我可以使用伪AI方法在其中使用多个if-else来验证所有内容,但我认为那不是最好的方法方法。该URL被称为Jira REST Api,因此语法是唯一的。

我要避免的是这个

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次更好的方法

解决方法

有各种可用的解决方案:

  • 只需使用StringBuilder或简单的字符串连接即可构建查询字符串
  • Springs UriComponentsBuilder JavaDoc提供了一种结构化的查询字符串构建方式,您的基于JPA的解决方案可能更熟悉
  • 使用RestTemplates可以传递表示您的请求参数的有条件填充的Map
  • Springs较新的WebClient类还支持使用uri生成器在获取时设置参数,如下所示:
WebClient c = WebClient.create();
c.get().uri(uriBuilder -> uriBuilder
    .queryParam("param1","value")
    .queryParam("param2","value2")
    .build()
).retrieve();