问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何使用RestTemplate访问restful服务

发布网友 发布时间:2022-04-21 19:55

我来回答

2个回答

热心网友 时间:2022-04-19 02:38

一. 什么是RestTemplate
传统情况下在Java代码里访问restful服务,一般使用Apache的HttpClient。不过此种方法使用起来太过繁琐。spring提供了一种简单便捷的模板类来进行操作,这就是RestTemplate。
二、举个例子。 //请求地址
String url = "http://localhost:8080/testPost";
//入参
RequestBean requestBean = new RequestBean();
requestBean.setTest1("1");
requestBean.setTest2("2");
requestBean.setTest3("3");

RestTemplate restTemplate = new RestTemplate();
ResponseBean responseBean = restTemplate.postForObject(url, requestBean, ResponseBean.class);
从这个例子可以看出,使用restTemplate访问restful接口非常的简单粗暴无脑。(url,
requestMap, ResponseBean.class)这三个参数分别代表 请求地址、请求参数、HTTP响应转换被转换成的对象类型。
RestTemplate方法的名称遵循命名约定,第一部分指出正在调用什么HTTP方法,第二部分指示返回的内容。本例中调用了restTemplate.postForObject方法,post指调用了HTTP的post方法,Object指将HTTP响应转换为您选择的对象类型。
三.手动指定转换器(HttpMessageConverter)

我们知道,调用reseful接口传递的数据内容是json格式的字符串,返回的响应也是json格式的字符串。然而restTemplate.postForObject方法的请求参数RequestBean和返回参数ResponseBean却都是java类。是RestTemplate通过HttpMessageConverter自动帮我们做了转换的操作。

默认情况下RestTemplate自动帮我们注册了一组HttpMessageConverter用来处理一些不同的contentType的请求。
如StringHttpMessageConverter来处理text/plain;MappingJackson2HttpMessageConverter来处理application/json;MappingJackson2XmlHttpMessageConverter来处理application/xml。
你可以在org.springframework.http.converter包下找到所有spring帮我们实现好的转换器。
如果现有的转换器不能满足你的需求,你还可以实现org.springframework.http.converter.HttpMessageConverter接口自己写一个。
四.设置底层连接方式
要创建一个RestTemplate的实例,您可以简单地调用默认的无参数构造函数。这将使用java.NET包中的标准Java类作为底层实现来创建HTTP请求。

但很多时候我们需要像传统的HttpClient那样设置HTTP请求的一些属性。RestTemplate使用了一种很偷懒的方式实现了这个需求,那就是直接使用一个HttpClient作为底层实现......
五.设置*(ClientHttpRequestInterceptor)
有时候我们需要对请求做一些通用的拦截设置,这就可以使用*进行处理。*需要我们实现org.springframework.http.client.ClientHttpRequestInterceptor接口自己写。

以上是如何使用RestTemplate方便快捷的访问restful接口。其实RestTemplate的功能非常强大

热心网友 时间:2022-04-19 03:56

定义一个简单的restful接口
@RestController
public class TestController
{
@RequestMapping(value = "testPost", method = RequestMethod.POST)
public ResponseBean testPost(@RequestBody RequestBean requestBean)
{
ResponseBean responseBean = new ResponseBean();
responseBean.setRetCode("0000");
responseBean.setRetMsg("succ");

return responseBean;
}
}

使用RestTemplate访问该服务
//请求地址
String url = "http://localhost:8080/testPost";
//入参
RequestBean requestBean = new RequestBean();
requestBean.setTest1("1");
requestBean.setTest2("2");
requestBean.setTest3("3");

RestTemplate restTemplate = new RestTemplate();
ResponseBean responseBean = restTemplate.postForObject(url, requestBean, ResponseBean.class);

从这个例子可以看出,使用restTemplate访问restful接口非常的简单粗暴无脑。(url,
requestMap, ResponseBean.class)这三个参数分别代表 请求地址、请求参数、HTTP响应转换被转换成的对象类型。
RestTemplate方法的名称遵循命名约定,第一部分指出正在调用什么HTTP方法,第二部分指示返回的内容。本例中调用了restTemplate.postForObject方法,post指调用了HTTP的post方法,Object指将HTTP响应转换为您选择的对象类型。还有其他很多类似的方法,有兴趣的同学可以参考官方api。
三.手动指定转换器(HttpMessageConverter)
我们知道,调用reseful接口传递的数据内容是json格式的字符串,返回的响应也是json格式的字符串。然而restTemplate.postForObject方法的请求参数RequestBean和返回参数ResponseBean却都是java类。是RestTemplate通过HttpMessageConverter自动帮我们做了转换的操作。
默认情况下RestTemplate自动帮我们注册了一组HttpMessageConverter用来处理一些不同的contentType的请求。
如StringHttpMessageConverter来处理text/plain;MappingJackson2HttpMessageConverter来处理application/json;MappingJackson2XmlHttpMessageConverter来处理application/xml。
你可以在org.springframework.http.converter包下找到所有spring帮我们实现好的转换器。
如果现有的转换器不能满足你的需求,你还可以实现org.springframework.http.converter.HttpMessageConverter接口自己写一个。详情参考官方api。
选好了HttpMessageConverter后怎么把它注册到我们的RestTemplate中呢。
RestTemplate restTemplate = new RestTemplate();
//获取RestTemplate默认配置好的所有转换器
List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();
//默认的MappingJackson2HttpMessageConverter在第7个 先把它移除掉
messageConverters.remove(6);
//添加上GSON的转换器
messageConverters.add(6, new GsonHttpMessageConverter());

这个简单的例子展示了如何使用GsonHttpMessageConverter替换掉默认用来处理application/json的MappingJackson2HttpMessageConverter。
四.设置底层连接方式
要创建一个RestTemplate的实例,您可以像上述例子中简单地调用默认的无参数构造函数。这将使用java.NET包中的标准Java类作为底层实现来创建HTTP请求。
但很多时候我们需要像传统的HttpClient那样设置HTTP请求的一些属性。RestTemplate使用了一种很偷懒的方式实现了这个需求,那就是直接使用一个HttpClient作为底层实现......
//生成一个设置了连接超时时间、请求超时时间、异常最大重试次数的httpClient
RequestConfig config = RequestConfig.custom().setConnectionRequestTimeout(10000).setConnectTimeout(10000).setSocketTimeout(30000).build();
HttpClientBuilder builder = HttpClientBuilder.create().setDefaultRequestConfig(config).setRetryHandler(new DefaultHttpRequestRetryHandler(5, false));
HttpClient httpClient = builder.build();
//使用httpClient创建一个ClientHttpRequestFactory的实现
ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
//ClientHttpRequestFactory作为参数构造一个使用作为底层的RestTemplate
RestTemplate restTemplate = new RestTemplate(requestFactory);

五.设置*(ClientHttpRequestInterceptor)
有时候我们需要对请求做一些通用的拦截设置,这就可以使用*进行处理。*需要我们实现org.springframework.http.client.ClientHttpRequestInterceptor接口自己写。
举个简单的例子,写一个在header中根据请求内容和地址添加令牌的*。
public class TokenInterceptor implements ClientHttpRequestInterceptor
{
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException
{
//请求地址
String checkTokenUrl = request.getURI().getPath();
//token有效时间
int ttTime = (int) (System.currentTimeMillis() / 1000 + 1800);
//请求方法名 POST、GET等
String methodName = request.getMethod().name();
//请求内容
String requestBody = new String(body);
//生成令牌 此处调用一个自己写的方法,有兴趣的朋友可以自行google如何使用ak/sk生成token,此方法跟本教程无关,就不贴出来了
String token = TokenHelper.generateToken(checkTokenUrl, ttTime, methodName, requestBody);
//将令牌放入请求header中
request.getHeaders().add("X-Auth-Token",token);

return execution.execute(request, body);
}
}

创建RestTemplate实例的时候可以这样向其中添加*
RestTemplate restTemplate = new RestTemplate();
//向restTemplate中添加自定义的*
restTemplate.getInterceptors().add(new TokenInterceptor());
resttemplate使用指南是什么?

一、引入依赖 要使用RestTemplate,首先需要在项目中引入Spring的相关依赖。确保你的项目中包含了Spring Web的依赖,这样你才能使用RestTemplate类。二、创建RestTemplate实例 在项目中使用RestTemplate之前,需要创建一个RestTemplate实例。你可以通过Spring的IoC容器来创建实例,也可以在代码中直接创建。三、发送HTTP...

RestTemplate入门

RestTemplate是Spring框架提供的核心工具,用于访问RESTful服务,能显著提升开发效率。本文将逐步探索其基本用法,深入细节将在后续内容中展开。1. RestTemplate简介RestTemplate基于HTTP协议,默认使用JDK的HttpUrlConnection,但支持替换为OkHttp或Apache HttpComponents等其他库。它通过HttpMessageConverter进行HTTP消息...

RestTemplate使用(JAVA)

postForEntity()允许指定响应类型。 delete方法:一般不推荐,因为无返回值。 put方法:同delete,无返回值。 exchange方法:是主要推荐的使用方式,允许开发者自定义HTTP请求方法,支持添加body和头信息,返回类型可为泛型,提供更大的灵活性。 excute方法:所有上述方法最终都调用excute方法,实...

精讲RestTemplate第9篇-如何通过HTTP Basic Auth认证

浏览器访问地址:httpbin.org/#...,这个接口服务通过OpenAPI(swagger)实现,方便在线测试。二、请求头方式携带认证信息 通过在HTTP请求头中携带Basic Auth认证的用户名和密码,实现认证。具体实现细节请查看代码注释。成功执行测试用例,证明RestTemplate正确携带了Basic认证信息,并得到响应结果200。三、拦截器...

restTemplate通讯与参数传递

RestTemplate 是 Spring Framework 提供的一个客户端工具,用于访问 RESTful 服务,它简化了与 RESTful 服务的交互,能够发送 HTTP 请求并处理响应结果。它支持多种 HTTP 请求类型,如 GET、POST、PUT、DELETE 等。接下来,我们将探讨 RestTemplate 如何传递不同类型的参数以及处理结果。以下将使用 xxxFor...

RestTemplate 简单使用

它遵循RestFul原则,简化了与HTTP服务的通信过程,程序只需提供URL即可发起请求并获取结果。默认情况下,RestTemplate依赖JDK的HTTP连接工具,但开发者可通过设置`setRequestFactory`属性切换到其他HTTP源,如Apache HttpComponents、Netty或OkHttp。在非Spring环境下使用RestTemplate,首先需引入spring-web包。在单元...

restTemplate通讯与参数传递

RestTemplate 是 Spring Framework 提供的高效工具,用于简化与 RESTful 服务的交互,支持 GET、POST、PUT、DELETE 等常见请求类型。它通过一系列方法如 xxxForObject,方便地进行参数传递和响应结果处理。参数传递与接收在调用远程服务时,RestTemplate 需要先进行注入。以下是不同参数类型下的操作示例:1. ...

SpringBoot 调用外部接口的三种方式

对于基本的HTTP请求,SpringBoot提供了`java.net.HttpURLConnection`或第三方库如Apache HttpClient等,以供开发者直接构建和发送HTTP请求。这种方式适用于对性能有严格要求或需要高度定制化请求的情况。方式二:使用RestTemplate Spring的RestTemplate类提供了方便的HTTP客户端接口,简化了调用RESTful服务的流程。它...

三种方法实现调用Restful接口

1、基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多,本次介绍三种:1)、 HttpURLConnection实现 2)、 HttpClient实现 3)、 Spring的RestTemplate 2、HTTPURLConnection实现 3、HttpClient实现 4、String的RestTemplate实现 springmvc.xml增加 controller ...

精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用

RestTemplate是Spring框架中用于执行HTTP请求的同步阻塞式客户端。它简化了使用底层HTTP客户端库的操作,提供了一种更方便、快捷的访问基于HTTP的Web服务的方式。RestTemplate在Spring 3.0版本引入,适用于RESTful风格设计的Web服务。尽管在Spring 5版本中引入了WebClient作为非阻塞式Reactive HTTP客户端,但...

restful服务api 微服务一定要用restful restfulapi微服务 restful web服务 restful服务 微服务与restful restful服务器 spring restful restful get
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
厂口银杏园地址在哪里? 昆明银杏大道在什么地方 昆明哪些地方有银杏树 从二月河“帝王三部曲”看90年代的文学场(一) 二月河《落霞三部曲》读书札记 安装织梦CMS到新浪SAE,这数据库主机,用户都是什么?这个是安装在新浪SE... SAE上的mySql初始化了怎么用啊,java怎么连上去啊,地址,端口号,账号... 金鱼尾部出现血丝,怎么办? 金鱼尾鳍上有血丝,急躁不安是什么病 请问?家里养的金鱼,一夜过来,金鱼尾巴上面都有红色血丝是怎么回事... 什么是 restful? 我想做一个 2转移1的网络切换器。通过电脑上的软件... 使用网络切换器电脑如何设罥 如何台式电脑网络转换成WIFI,需要什么硬件,按什... 广州从化花园路是哪个镇的? 在电脑上有用什么软件可以转换成移动网络的接入点? 广东省位于中国地图的什么位置 有没有什么软件可以让办公室的电脑快速在内网和外... 求win7下能用滴IP地址切换器 广发银行的客户服务专员主要工作内容是什么? 为什么百度导航从化到四会就不导航珠三角环线高速 呼叫中心客服,客服代表,客服坐席有什么区别? 电脑上网能不能切换网络 谁有中国地图及各地风景要点图? 什么是银行呼叫中心? 什么软件可以把宽带转换成WIFI 银行,通信的呼叫中心客户服务主要是负责做些什么... 电脑如何切换IP?,有没有什么软件? 建设银行呼叫中心坐席是做什么的 广州几个区的分布图 怎样用通俗的语言解释什么叫 REST,以及什么是 RES... 如何理解rest和restful,什么是restfulAPI? 什么是RESTful Web Service REST是什么?如何实现RESTful 举例说明,RESTful 到底有哪些好处 如何在Java中 提供 RESTful Web 服务 如何在Java客户端调用RESTful服务 应用Spring MVC发布restful服务是怎样的一种体验 RESTful Web Services到底是干什么的啊~ spring mvc 提供的restful 服务怎么访问 RESTful WebService和web service的区别 如何 调用 restful web services 网站,不对外开放API,有必要用restful吗 如何POST一个JSON格式的数据给Restful服务 苹果手机icloud账户和itunes账户一样吗 微博申请超话粉丝大咖身份证使用次数超限怎么办? 苹果icloud的账户和app store都不一样怎么办 新浪微博身份证使用次数超限 微博身份证使用次数超限是什么意思? 微博认证显示身份证使用次数超限,客服说是支付宝绑...