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();

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...