java - RestTemplate 和 UriComponentsBuilder 访问 API
问题描述
我正在尝试访问具有表示为 JSON 的查询参数的 API 的内容,我需要使用 RestTemplate 和 UriComponentsBuilder 发送一个 URL
api:http://remote-api/person?filter={"code":"30ABD999"}&page=0&size=1&sort=name
public Person getPerson(String filter, Optional<Integer> size,
Optional<Integer> page, Optional<String> sort){
String endpoint= "http://localhost:8081/person"
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(this.endpoint)
.queryParam("filter",filter);
page.ifPresent(p -> builder.queryParam("page", p));
size.ifPresent(s -> builder.queryParam("size", s));
sort.ifPresent(s -> builder.queryParam("sort", s));
String url = builder.build().toUriString();
ResponseEntity<Person> response =
this.restTemplate.getForObject(url, null, Person.class);
return response.getBody();
}
当我提出请求时出现此错误
Raised java.lang.IllegalArgumentException: Not enough variable values available to expand '"code"'
任何帮助将不胜感激。谢谢
解决方案
您不能null
作为第二个参数传入getForObject
.
试试这样:
this.restTemplate.getForObject(url, Person.class);
有关如何在 Spring 中使用 HTTP 客户端的更多详细信息可以在我的德语博客中找到:
https ://agile-coding.blogspot.com/2021/01/reactive-webclient.html
推荐阅读
- python - 如何设置笔记本电脑麦克风以用于语音识别
- java - 同步线程以从 arduino 发送和接收数据
- reactjs - 如何在 react-bootstrap 导航栏中正确设置路由
- python - 构建一个能够以特定顺序运行一些任务的简单应用程序
- javascript - 根据另一个对象数组的属性值对数组进行排序
- php - pdomodel:只有 fech 1 行
- java - 从其他活动向 Handler 发送消息
- c - 为什么生成的解析器会出现语法错误?
- wordpress - 从我的虚拟主机下载 zip 文件
- django - 使用 post_save 信号更新用户配置文件问题。错误消息是用户在更新时已经存在