我向 API 发送一些 get 查询,当我发送空查询参数时,该 API 返回400 Bad 请求。
但是,我事先并不知道哪些可选查询参数将为空。除了测试每个可选参数是否为空之外,是否有更简单的方法来动态删除空参数?
目前我正在做:
private URI getApiUrl(QueryParametersObject qpo) {
String url = configBundle.getPropertyStr("some.api.url");
UriComponentsBuilder builder = UriComponentsBuilder
.fromHttpUrl(url)
.queryParam("mandatoryParam1", qpo.getMandatoryParam1()) // MANDATORY
.queryParam("mandatoryParam2", qpo.getMandatoryParam2()); // MANDATORY
if (!qpo.getOptionalParam1().isEmpty())
builder.queryParam("optionalParam1", qpo.getOptionalParam1());
if (!qpo.getOptionalParam2().isEmpty())
builder.queryParam("optionalParam2", qpo.getOptionalParam2());
if (!qpo.getOptionalParam3().isEmpty())
builder.queryParam("optionalParam3", qpo.getOptionalParam3());
return builder.build().encode().toUri();
}
Run Code Online (Sandbox Code Playgroud)
当可选查询参数的数量增加时,它可能会变得相当麻烦。