RestTemplate服务之间传递数据-SpringBoot

一、调用方:

代码

/**
* 描述: 封装的RestTemplate方法。
* url: 被调用方接口的URL.
* paramJson: 需要传递的参数数据, 这里传输的是list,使用jackson转换了.
* request: HttpServletRequest需要使用此参数设置Header和传输的数据.
*/
public void put(String url, String paramJson, HttpServletRequest request) throws JsonProcessingException {
        HttpEntity<String> requestEntity = setHttpHeader(request, paramJson);
        restTemplate.exchange(url, HttpMethod.PUT, requestEntity, String.class);
  }

/**
* 描述: 封装的Http Header方法。
* url: 被调用方接口的URL.
* json: 需要传输的数据.
*/
private HttpEntity<String> setHttpHeader(HttpServletRequest request, String json) throws JsonProcessingException {
        String authorization = request.getHeader("Authorization");  //使用了Spring security,所以,需要设置token.
        HttpHeaders headers = new HttpHeaders();
        headers.add("Accept", "*/*");
        headers.add("Content-Type", "application/json");
        headers.add("Authorization", authorization);

        return new HttpEntity<>(json, headers);
    }

二、被调用方:

代码

/**
* 描述: 使用RequestBody接收传递过来的数据,使用jackson,进行反序列化.得到需要的数据.
*/
public void putTest(@RequestBody String ids) throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        List<String> beanList = mapper.readValue(ids, new TypeReference<List<String>>() {});
    }

三、总结:

1. 对于项目中使用了Spring security,就会对于所有的API都保护起来,没有对应Token,是无法访问的,使用RestTemplate去访问其他的服务的时候,Token不会传递,需要我们对于请求头,再次添加token,才能保证调用数据的正确性。这是刚刚项目中的问题,若有更好的解决方法和问题,请大家包含和提问啦。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值