RestTemplate的常用方式与用法详解
2021/7/8 23:39:44
本文主要是介绍RestTemplate的常用方式与用法详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
RestTemplate 简介
spring 提供的同步请求Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,
是Spring用于同步client端的核心类,简化了与http服务的通信,并满足RestFul原则,程序代码可以给它提供URL,并提取结果。
本文示例采用钉钉开发者接口文档地址
https://developers.dingtalk.com/document/app
GET请求
先来看使用 RestTemplate 发送 GET 请求。在 RestTemplate 中,和 GET 请求相关的方法有如下几个:
获取企业内部应用的access_token
get接口举例: GET https://oapi.dingtalk.com/gettoken?appkey=appkey&appsecret=appsecret
一. getForObject(URI url, Class responseType)
这种方式可以直接拼接在地址中例如下面这样
String url = "https://oapi.dingtalk.com/gettoken?appkey=appkey&appsecret=appsecret"; URI uri = URI.create(url); ResponseEntity<String> responseEntity = restTemplate.getForObject(uri, String.class);
二. getForObject(String url, Class responseType, Object… uriVariables)
第三个参数是一个可变长度的参数,所以我们可以这样,url中的1,2可以分别用参数替换
String appkey="xxxx"; String appsecret="xxxx"; String url = "https://oapi.dingtalk.com/gettoken?appkey={1}&appsecret={2}"; ResponseEntity<String> responseEntity = restTemplate.getForObject(uri, String.class,appkey,appsecret);
三. getForObject(String url, Class responseType, Map<String, ?> uriVariables)
Map<String, Object> map = new HashMap<>(); String appkey="xxxx"; String appsecret="xxxx"; String url = "https://oapi.dingtalk.com/gettoken?appkey={appkey}&appsecret={appsecret}"; map.put("appkey", appkey); map.put("appsecret", appsecret); ResponseEntity<String> responseEntity = restTemplate.getForObject(url, String.class, map);
四. getForEntity(URI url, Class responseType)
这种方式可以直接拼接在地址中例如下面这样
String url = "https://oapi.dingtalk.com/gettoken?appkey=appkey&appsecret=appsecret"; URI uri = URI.create(url); ResponseEntity<String> responseEntity = restTemplate.getForEntity(uri, String.class);
五. getForEntity(String url, Class responseType, Object… uriVariables)
第三个参数是一个可变长度的参数,所以我们可以这样,url中的1,2可以分别用参数替换
String appkey="xxxx"; String appsecret="xxxx"; String url = "https://oapi.dingtalk.com/gettoken?appkey={1}&appsecret={2}"; ResponseEntity<String> responseEntity = restTemplate.getForEntity(uri, String.class,appkey,appsecret);
六. getForEntity(String url, Class responseType, Map<String, ?> uriVariables)
将参数put进map里
Map<String, Object> map = new HashMap<>(); String appkey="xxxx"; String appsecret="xxxx"; String url = "https://oapi.dingtalk.com/gettoken?appkey={appkey}&appsecret={appsecret}"; map.put("appkey", appkey); map.put("appsecret", appsecret); ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class, map);
getForEntity与getForObject区别
GetForEntity和GetForObject用法几乎完全一致,区别在于前者可以查看请求状态码,请求头信息。
getForEntity返回的是一个ResponseEntity,而getForObject返回的就只是返回内容。getForObject的返回相当于只返回http的body部份而getForEntity的返回是返回全部信息
举例:
首先使用
getForEntity与getForObject 带Header头方式
POST请求
和 GET 请求相比,RestTemplate 中的 POST 请求多了一个类型的方法
一. postForEntity(URI url, Object request,Class responseType)
因为body里面不传值,所以此处的第二个参数传个null
String url = "https://oapi.dingtalk.com/service/activate_suite"; URI uri = URI.create(url); ResponseEntity<String> responseEntity = restTemplate.postForEntity(uri, null,String.class);
二. postForEntity(URI url, Object request, Class responseType,Object… uriVariables)
因为body里面不传值,所以此处的第二个参数传个null
String groupId="xxxx"; String reportId="xxxx"; String url = "https://api.powerbi.com/v1.0/myorg/groups/{1}/reports/{2}/GenerateToken"; ResponseEntity<String> responseEntity = restTemplate.postForEntity(uri, null,String.class,groupId,reportId);
三. postForEntity(URI url, Object request,Class responseType,Map<String, ?> uriVariables)
此方法与上面不同的是将参数列入一个map里面
因为body里面不传值,所以此处的第二个参数传个null
String groupId="xxxx"; String reportId="xxxx"; Map<String,Object> map= Maps.newHashMap(); map.put("groupId", groupId); map.put("reportId", reportId); String url = "https://api.powerbi.com/v1.0/myorg/groups/{groupId}/reports/{reportId}/GenerateToken"; ResponseEntity<String> responseEntity = restTemplate.postForEntity(uri, null,String.class,map);
四. postForObject(URI url, Object request,Class responseType)
与方法POST-1调用方法一样
五. postForObject(URI url, Object request, Class responseType,Object… uriVariables)
与方法POST-2调用方法一样
六. postForObject(URI url, Object request,Class responseType,Map<String, ?> uriVariables)
与方法POST-3调用方法一样
七. postForLocation(URI url, Object request, Class responseType)
八. postForLocation(URI url, Object request,Class responseType,Object… uriVariables)
九. postForLocation(URI url, Object request,Class responseType,Map<String, ?> uriVariables)
三者的区别postForLocation,postForEntity,postForObject
首先是三个postForLocation,注意这三个方法返回的是一个URI,其余都是responseEntity, T
一般用于重定向接受者到一个新的位置,
对于post方法来说,请求参数可以放到请求url里面(uriVariables),也可以放到http的body里面
这篇关于RestTemplate的常用方式与用法详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26手写消息中间件:从零开始的指南
- 2024-11-26Java语音识别项目资料:新手入门教程
- 2024-11-26JAVA语音识别项目资料:新手入门教程
- 2024-11-26Java语音识别项目资料:入门与实践指南
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料:新手入门教程
- 2024-11-25Java创意资料:新手入门的创意学习指南
- 2024-11-25JAVA对接阿里云智能语音服务资料详解:新手入门指南
- 2024-11-25Java对接阿里云智能语音服务资料详解