RestTemplate的基本使用方法

查看源码的话分为了好多种请求方式,主要用到的就是get、post方式的请求,可能偶尔也会用到put和detele,目前的话还没有接触到过这两种方式。下面就以get和post方式为主介绍。

  1. 首先接口提供方 以及接口消费方

    我在本地创建了两个项目 端口为9999的为接口提供方,端口8888的为接口消费方
    在接口提供方中有一个接口 
    
  2. 使用get方式
    在这里插入图片描述
    接口调用方需要引入restTemplate
    在这里插入图片描述
    页面访问路径 看返回值
    在这里插入图片描述

在这里插入图片描述
两者除了地址不一样之外内容是一样的。
改变返回值类型为实体类时,打印输返回值内容
在这里插入图片描述
前端返回数据还是和之前一样,只显示body内容
在这里插入图片描述
在这里插入图片描述
在接口提供方修改接口返回值为list之后,接口调用方也修改返回值 前端返回结果是list
在这里插入图片描述
在知道返回参数类型的时候我们可以使用相应的实体类去接受,而不用单纯的只用string去接受,然后用gson去解析,稍显麻烦

  1. 使用post方式我改变了调用放的接参以及返参

在这里插入图片描述
如图 接参是一个实体类,返参是一个list
在这里插入图片描述
但是我在调用的时候没有修改返回值类型,就报json解析异常的问题,因为调用方的返回值和提供方的返回数据是不一样的,这个需要很谨慎

在这里插入图片描述
在传参的过程中发现接口提供方接到的参数是null,但是在接口调用的时候加入了参数book以及所包括的属性

在这里插入图片描述
对于以上问题,我根据使用的方法postForEntity往下面看源码
在这里插入图片描述
首先进入到 postForObject 方法中 发现request 参数 传入了一个 httpEntityCallBack 方法中 , 那么接着追踪
在这里插入图片描述
httpEntityCallBack方法又调用了 RestTemplate的HttpEntityRequestCallback方法
进入HttpEntityRequestCallback
在这里插入图片描述
发现用到了判断instanceof类型判定requestBody参数是否是 HttpEntity类型
如果不是则 创建一个HttpEntity类将 requestBody 参数传入
那么我们来看一下 HttpEntity 是怎么个构造
在这里插入图片描述
这里可以看到 HttpEntity 有两个构造方法 一个是 传入 泛型的body 另一个是传入 MultiValueMap<String,String> headers

那么 这个MultiValueMap 是个什么东东

百度一下 发现 MultiValueMap 可以让一个key对应多个value,感觉是value产生了链表结构,可以很好的解决一些不好处理的字符串问题

找到 MultiValueMap 接口的实现类
查看里面的构造方法,然后我自己写了一个方法 来对他进行遍历及查询
在这里插入图片描述
继续回到我们调用的postForEntity方法上,然后使用MultiValueMap的实现类LinkedMultiValueMap
在这里插入图片描述
然后debug我们的接口调用方以及接口提供方 发现接口提供方的接口我们的传参有被传进去
在这里插入图片描述

以上就是使用restTemplate的基本方法,有问题的话还请打架多多指教

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值