Spring 编程常见错误 50 例
傅健
Cisco 高级软件工程师、Netty 源码贡献者
17065 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 29 讲
结束语 (1讲)
期末测试 (1讲)
Spring 编程常见错误 50 例
15
15
1.0x
00:00/00:00
登录|注册

21 | Spring Rest Template 常见错误

你好,我是傅健。
前面几节课,我们介绍了一个 Spring 微服务使用数据库过程中可能遇到的常见错误。而实际上,除了直接使用数据库外,使用其他微服务来完成功能也是一个常见的应用场景。
一般而言,微服务之间的通信大多都是使用 HTTP 方式进行的,这自然少不了使用 HttpClient。在不使用 Spring 之前,我们一般都是直接使用 Apache HttpClient 和 Ok HttpClient 等,而一旦你引入 Spring,你就有了一个更好的选择,这就是我们这一讲的主角 RestTemplate。那么在使用它的过程中,会遇到哪些错误呢?接下来我们就来总结下。

案例 1:参数类型是 MultiValueMap

首先,我们先来完成一个 API 接口,代码示例如下:
@RestController
public class HelloWorldController {
@RequestMapping(path = "hi", method = RequestMethod.POST)
public String hi(@RequestParam("para1") String para1, @RequestParam("para2") String para2){
return "helloworld:" + para1 + "," + para2;
};
}
这里我们想完成的功能是接受一个 Form 表单请求,读取表单定义的两个参数 para1 和 para2,然后作为响应返回给客户端。
定义完这个接口后,我们使用 RestTemplate 来发送一个这样的表单请求,代码示例如下:
RestTemplate template = new RestTemplate();
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("para1", "001");
paramMap.put("para2", "002");
String url = "http://localhost:8080/hi";
String result = template.postForObject(url, paramMap, String.class);
System.out.println(result);
上述代码定义了一个 Map,包含了 2 个表单参数,然后使用 RestTemplate 的 postForObject 提交这个表单。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Spring Rest Template 常见错误 Spring Rest Template 是微服务通信中常用的工具,但在使用过程中可能会遇到一些常见错误。本文通过两个案例介绍了在使用 RestTemplate 时可能遇到的问题及解决方法。 案例一中,介绍了在使用 RestTemplate 提交表单时可能遇到的问题。当使用普通的 HashMap 存储表单数据时,实际上是以 JSON 请求体的形式提交数据,导致接口无法正确处理表单参数。解决方法是将 HashMap 替换为 MultiValueMap 类型来存储表单数据,以满足 RestTemplate 提交表单的要求。 案例二中,介绍了当 URL 中含有特殊字符时可能出现的问题。通过一个简化的 HTTP 接口示例,展示了在使用 RestTemplate 发送带有特殊字符的 URL 请求时,服务器可能无法正确解析参数的情况。这提醒读者在使用 RestTemplate 时需要注意 URL 中的特殊字符处理。 另外,文章还提到了避免多次 URL 编码的问题,并给出了相应的解决方法。 通过这些案例,读者可以了解在使用 Spring Rest Template 时可能遇到的常见问题,并学习到相应的解决方法,有助于提高在微服务通信中的开发效率和避免常见错误。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Spring 编程常见错误 50 例》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • 第一装甲集群司令克莱斯特
    传参数的时候,还遇到过Integer cannot cast to String.不好好看官方文档,仅仅依靠片面的互联网资料,就会踩坑。感谢老师!
    2021-06-10
    5
  • jjn0703
    抓包排查问题 很关键的了~
    2021-12-09
    3
  • chenlx
    不同版本的 SpringBoot UriComponentsBuilder#fromHttpUrl 和 UriComponentsBuilder#fromUriString 对 fragment 逻辑是不一致的,SpringBoot 2.7.6 UriComponentsBuilder#fromHttpUrl 得到结果是 helloworld:1 而不是 helloworld:1#2
    2022-12-17归属地:浙江
    1
  • 刘增泽
    spring-boot 2.3.7.RELEASE UriComponentsBuilder的fromHttpUrl方法也添加了对fragment的解析
    2023-12-24归属地:山东
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部