微服务——RestTemplate
GET请求:
第一种:getForEntity:
此方法返回的是ResponseEntity,该对象是Spring对HTTP请求响应的封装。
RestTemplate rt = new RestTemplate();
ResponseEntity<String> re = rt.getForEntity(uri,String.class);
String body = re.getBody();
或者:
ResponseEntity<User> re = rt.getForEntity(uri,User.class);
User body = re.getBody();
此方法提供了三个不同的重载实现:
1.getForEntity(String url,Class responseType,Object...urlVariables)
其中responseType是指返回的类型,urlVariables是get请求的参数,为数组类型,数组中的值顺序要和url中参数顺序一致。比如:
String url = http://USER-SERVICE/user.do?name={1}&age={2};
urlVariables=["jason",26];
2.getForEntity(String url,Class responseType,Map urlVariables)
map中的key对应url中参数的名字,value对应参数的值。比如:
String url = http://USER-SERVICE/user.do?param1={name} & param2={age};
map.put("name","jason");
map.put("age",26);
3.getForEntity(URI url,Class responseType)
该方法中使用URI代替了之前的url和urlVariables参数进行绑定。
第二种:getForObject:
此方法是对getForEntity的进一步的封装,实现请求直接返回包装好的对象内容。
RestTemplate rt = new RestTemplate();
String rs = rt.getForObject(uri,String.class);
或者:
User user = rt.getForObject(uri,User.class);
也提供了三个不同的重载实现,用法和上面的一样:
1.getForObject(String url,Class responseType,Object...urlVariables)
2.getForObject(String url,Class responseType,Map urlVariables)
3.getForObject(URI url,Class responseType)
POST请求:
第一种:postForEntity:
同GET请求一样,返回的是ResponseEntity<T>对象,其中T为请求相应的body的类型。
唯一不同的是request可以是普通对象,也可以是HttpEntity对象。
RestTemplate rt = new RestTemplate();
User user1 = new User("jason",26);
User user2 = rt.getForObject(url,user1,User.class);
也提供了三个不同的重载实现:
1.postForEntity(String url,Object request,Class responseType,Object...uriVariables);
2.postForEntity(String url,Object request,Class responseType,Map uriVariables);
3.postForEntity(URI url,Object request,Class responseType);
第二种:postForObject:
1.postForObject(String url,Object request,Class responseType,Object...uriVariables);
2.postForObject(String url,Object request,Class responseType,Map uriVariables);
3.postForObject(URI url,Object request,Class responseType);
第三种:postForLocation:
该方法实现了以POST请求提交资源,并返回新资源的URI对象,比如:
User user = new User("jason",26);
URI responseURI = restTemplate.postForLocation(url,user,);
三种重载方法:
1.postForLocation(String url,Object request,Object...uriVariables);
2.postForLocation(String url,Object request,Map uriVariables);
3.postForLocation(URI url,Object request);
PUT请求:
在RestTemaplate中,对PUT请求可以通过put方法进行调用。put方法返回值是void.
三种不同的重载方法:
put(String url,Object request,Object...urlVariable);
put(String url,Object request,Map urlVariable);
put(URI uri,Object request);
DELETE请求:
返回值为void.
delete(String url,Object...urlVariable);
delete(String url,Map urlVariable);
delete(URI uri,);
微服务——RestTemplate的更多相关文章
- SpringCloud(1)---基于RestTemplate微服务项目案例
基于RestTemplate微服务项目 在写SpringCloud搭建微服务之前,我想先搭建一个不通过springcloud只通过SpringBoot和Mybatis进行模块之间额通讯.然后在此基础上 ...
- SprirngBoot微服务之间的交互—— restTemplate
一 例:需要在storage服务中请求utils服务的某个接口(两个服务都已向同一台eureka server 注册) 步骤: 1 在utils创建需被调用的接口 @RestController @R ...
- SpringCloud(1)----基于RestTemplate微服务项目
在写SpringCloud搭建微服务之前,我想先搭建一个不通过springcloud只通过SpringBoot和Mybatis进行模块之间额通讯.然后在此基础上再添加SpringCloud框架. 下面 ...
- 「 从0到1学习微服务SpringCloud 」04服务消费者Ribbon+RestTemplate
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...
- Spring Cloud Alibaba(2)---RestTemplate微服务项目
RestTemplate微服务项目 前言 因为要运用 Spring Cloud Alibaba 开源组件到分布式项目中,所以这里先搭建一个不通过 Spring Cloud只通过 RestTemplat ...
- [译]Spring构建微服务
此文为译文,原文地址 介绍 本文通过一个使用Spring.Spring Boot和Spring Cloud的小例子来说明如何构建微服务系统. 我们可以通过数个微服务组合成一个大型系统. 我们可以想象下 ...
- 使用Spring Sleuth和Zipkin跟踪微服务
随着微服务数量不断增长,需要跟踪一个请求从一个微服务到下一个微服务的传播过程, Spring Cloud Sleuth 正是解决这个问题,它在日志中引入唯一ID,以保证微服务调用之间的一致性,这样你就 ...
- 综合使用spring cloud技术实现微服务应用
在之前的章节,我们已经实现了配置服务器.注册服务器.微服务服务端,实现了服务注册与发现.这一章将实现微服务的客户端,以及联调.实现整个spring cloud框架核心应用. 本文属于<7天学会s ...
- 【译文】用Spring Cloud和Docker搭建微服务平台
by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...
随机推荐
- LogisticRegression 和 LogisticRegressionCV
在scikit-learn中,与逻辑回归有关的主要是这3个类.LogisticRegression, LogisticRegressionCV 和logistic_regression_path.其中 ...
- J S 脚本语言 if() { if { } else { } } var a =100; switch { case ( ) break ; } 基础详解 , 最下面有例子
注释语法 注释语法// 多行注释/ JS输出语句 JS样式尽量靠最下面写 <script type="text/javascript">//嵌入JS开始代码 //ale ...
- 常用Common集合
Log using System; using System.IO; using System.Linq; using System.Text; namespace Common { public c ...
- .NET Core开发日志——RequestDelegate
本文主要是对.NET Core开发日志--Middleware的补遗,但是会从看起来平平无奇的RequestDelegate开始叙述,所以以其作为标题,也是合情合理. RequestDelegate是 ...
- robot framework教程-------虫师
http://www.testclass.net/2017/09/28/happy-holidays/
- jQuery 选择器 筛选器 样式操作 文本操作 属性操作 文档处理 事件 动画效果 插件 each、data、Ajax
jQuery jQuery介绍 1.jQuery是一个轻量级的.兼容多浏览器的JavaScript库. 2.jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方 ...
- [No0000B2]ReSharper操作指南3/16-配置ReSharper与代码校错
配置ReSharper ReSharper功能具有默认配置,这些配置基于.NET世界中的约定和最佳实践.但是,每个功能都可以根据您的需求和喜好灵活调整. ReSharper首选项可以在以下位置进行配置 ...
- js return false\e.preventDefault() 以及session
@{ ViewBag.Title = "Test"; } <h2>Test</h2> 区别的介绍 <br/> 我们在平时的编码中javascri ...
- CSS盒子模型(简要了解)
CSS中, Box Model叫盒子模型(或框模型),Box Model规定了元素框处理元素内容(element content).内边距(padding).边框(border) 和 外边距(marg ...
- [skill][http] http管道化连接
已知http的请求响应是一对一的. 就是一个请求跟着接下来的响应便是与之配对了. 而另一种方式, 可以依靠顺序, 即发送多个http请求, 然后返回对个http响应. 严格按照顺序将他们对应起来, 称 ...