关于使用RestTemplate中请求方法的使用问题总结

对于RestTemplate相对比较陌生,我记得我只是使用过httpClient,突然遇到这个东西,很迷茫,网上搜了一下,看着是和httpClient实现的功能差不多,具体的差异这里就不说了,可以自行百度,我这里只记录一下我项目中遇到的问题。

使用这个RestTemplate最大的问题,除了学习用法之外,还要适应现在的接口接收参数,因为要发送的接口已经在使用,所以要符合现有接口规则(忍不住吐糟一下,接收参数真是太乱,头一次遇到)。这里记录就以模拟伪代码的形式:

1.比如,现有一接口,是post形式,参数是实体类

@PostMapping
public String a(@RequestBody 实体类 名){}

用RestTemplate请求这样的接口,我用这样的方式

HttpHeaders headers = new HttpHeaders();
        headers.add("Authorization", “依据项目而定”);
        headers.add("Content-Type", "application/json");

        HttpEntity<实体类> entity = new HttpEntity<>(实体类, headers);
        //方法一,底层也是方法二的实现
        Result result = restTemplate.postForObject(url, entity, Result.class);
        //方法二
        ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class, "");

注:写法也不止这么多,还需要依据情况而定,get形式的这里就不做栗子了,目前还没有遇到问题,接收形式都差不多。

2.这个问题是比较蒙圈的,因为我搜索的栗子,基本都是需要接收接口里的参数有注解的,可是遇到一个接口里的参数没有注解,这就让我很迷茫了,突然间不知道该怎么做了,然后就是用笨方法,各种试,各种搜,功夫不负有心人,还是解决了(ps:还是要多读相关的文档)。

问题:post请求接口,参数是String的,没有任何的注解。

@PostMapping
public String a(String 名){}

用RestTemplate请求这样的接口,需用这样的方式

 HttpHeaders headers = new HttpHeaders();
        headers.add("Authorization", “以实际情况为准”);
        //这个可以自行了解,key可以对应多个value,参数用这个传输,要不然接收不到
        MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
        paramMap.add("String", string参数值);

//        HttpEntity<String> entity = new HttpEntity<>( headers);
        ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, new HttpEntity<MultiValueMap<String, Object>>(paramMap,headers), String.class, "");

以上是初步学习使用RestTemplate过程中遇到的问题,记录一下,作为学习的笔记。

推荐一下,这个比较全面,可以看一下:

https://blog.csdn.net/u012843361/article/details/79893638

发布了85 篇原创文章 · 获赞 30 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/BinshaoNo_1/article/details/101751115
今日推荐