SprirngBoot微服务之间的交互—— restTemplate
一 例:需要在storage服务中请求utils服务的某个接口(两个服务都已向同一台eureka server 注册)
步骤:
1 在utils创建需被调用的接口
@RestController
@RequestMapping("/api")
public class CheckIPResource {
@PostMapping("/checkip")
public String checkIP(@RequestBody TestEntity testEntity) {
//处理数据
// 返回结果
return "404";
}
}
2 在storage的主类里创建restTemplate
位置: com.ejtone.ejt1.StorageApp
public class StorageApp {
@Bean
@LoadBalanced
RestTemplate restTemplate(){ return new RestTemplate(); }
}
3 在storage需要调用utils接口的地方去调用
public class CheckIpService {
@Autowired
private RestTemplate restTemplate;
public void testFrom(TestEntity testEntity){
// postForObject 请求方式:post 常用的请求方式还有get,具体见下方第二点
// http://utils/api/checkip utils:是utils微服务向eureka server注册时的名称,后接具体位置
// new HttpEntity<>(testEntity) 请求体 --可带请求头,具体见下方第三点
//String.class 请求响应返回后的数据的类型
restTemplate.postForObject("http://utils/api/checkip",
new HttpEntity<>(testEntity),
String.class);
}
}
二 请求方式除了上面使用的post之外,还有getForObject:
// 参数url是http请求的地址
// Class responseType 请求响应返回后的数据的类型
// String... urlVariables 请求中需要设置的参数
RestTemplate.getForObject(String url, Class responseType, String... urlVariables)
例如下方,url上带着一个参数{id},最后执行该方法会返回一个String类型的结果,后面的id是请求的一个具体变量。
template.getForObject(url + "get/{id}", String.class, id);
三 HttpEntity<>(请求体,请求头)
public class ParService {
@Autowired
private RestTemplate restTemplate;
public Par setPar(TxtFileVM txtFileVM, HttpServletRequest request) {
//创建一个请求头
HttpHeaders headers = new HttpHeaders();
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String key = (String) headerNames.nextElement();
String value = request.getHeader(key);
headers.add(key, value);
}
txtPath = restTemplate.postForObject("http://storage/api/create/txtfile",
new HttpEntity<>(txtFileVM,headers),
String.class);
}
SprirngBoot微服务之间的交互—— restTemplate的更多相关文章
- JHipster技术栈定制 - 基于UAA的微服务之间安全调用
本文通过代码实例演示如何通过UAA实现微服务之间的安全调用. uaa: 身份认证服务,同时也作为被调用的资源服务.服务端口9999. microservice1: 调用uaa的消费者服务,服务端口80 ...
- 微服务之间如何共享DTO?
1. 概述 近些年来,微服务变得越来越流行.微服务基本特征是模块化.独立.易于扩展的.它们之间需要协同工作并交换数据.为了实现这一点,我们创建了名为 DTO 的共享数据传输对象.在本文中,我们将介绍在 ...
- spring cloud实战与思考(二) 微服务之间通过fiegn上传一组文件(上)
需求场景: 微服务之间调用接口一次性上传多个文件. 上传文件的同时附带其他参数. 多个文件能有效的区分开,以便进行不同处理. Spring cloud的微服务之间接口调用使用Feign.原装的Feig ...
- spring cloud实战与思考(三) 微服务之间通过fiegn上传一组文件(下)
需求场景: 用户调用微服务1的接口上传一组图片和对应的描述信息.微服务1处理后,再将这组图片上传给微服务2进行处理.各个微服务能区分开不同的图片进行不同处理. 上一篇博客已经讨论了在微服务之间传递一组 ...
- SOA和微服务之间的区别
近几年,我们有很多文章对SOA和微服务之间的不同点和相似点进行了分析.有些人认为SOA有很多地方是值得微服务学习的,而有些人则认为区别对待微服务和SOA会更好.而Neal Ford认为,将单体迁移到面 ...
- SpringCloud实战 | 第五篇:SpringCloud整合OpenFeign实现微服务之间的调用
一. 前言 微服务实战系列是基于开源微服务项目 有来商城youlai-mall 版本升级为背景来开展的,本篇则是讲述SpringCloud整合OpenFeign实现微服务之间的相互调用,有兴趣的朋友可 ...
- 微服务之间的调用(Ribbon与Feign)
来源:https://blog.csdn.net/jrn1012/article/details/77837658 使用Eureka作为服务注册中心,在服务启动后,各个微服务会将自己注册到Eureka ...
- 阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别(转载)
转载来源:https://youzhixueyuan.com/the-difference-between-restful-soap-rpc-soa-and-micro-service.html 内容 ...
- 服务注册中心之ZooKeeper系列(二) 实现一个简单微服务之间调用的例子
上一篇文章简单介绍了ZooKeeper,讲了分布式中,每个微服务都会部署到多台服务器上,那服务之间的调用是怎么样的呢?如图: 1.集群A中的服务调用者如何发现集群B中的服务提供者呢? 2.集群A中的服 ...
随机推荐
- redis高可用(主从复制)
熟练掌握redis需要从 reids如何操作5种基本数据类型,redis如何集群,reids主从复制,redis哨兵机制redis持久化 reids主从复制 的作用可以:实现数据备份,读写分离,集群, ...
- sql server 索引碎片相关问题
1.查看表的索引碎片情况 --改成当前库 use DB_Name --创建变量 指定要查看的表 declare @table_id int set @table_id=object_id('Table ...
- python函数嵌套定义
python的这个特性是很特别的,与C#和C++都不一样.请看下面的例子 def outFun(): def innerFun_0():#1.在内部定义一个函数 print("i am fi ...
- 【亲测】502 Bad Gateway 怎么解决?
502 Bad Gateway 怎么解决? 1.什么是502 badgateway 报错 简单来说 502 是报错类型代码,bad gateway 错误的网关. 2.产生错误的原因 连接超时 具体原因 ...
- how find out what is causing Visual Studio to think each project is out of date
You can find out what is causing Visual Studio to think each project is out of date, and then addres ...
- 清除UIWebView缓存
//清除cookies NSHTTPCookie *cookie; NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCook ...
- python大法好——继承、多态
1.继承 类的继承 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制. 通过继承创建的新类称为子类或派生类,被继承的类称为基类.父类或超类. 继承语法 class 派 ...
- java 流转换BASE64的一些问题
java 转换BASE64过程中,出现很多结尾为空的问题!暂时不清楚为什么会这样- ``` java //根据url地址转换成BASE64 public static String getURLIma ...
- Django 重写用户模型
AUTH_USER_MODEL = 'myapp.MyUser' django——重写用户模型 Django内建的User模型可能不适合某些类型的项目.例如,在某些网站上使用邮件地址而不是用户名作为身 ...
- Django+Vue.js框架快速搭建web项目
一.vue环境搭建1.下载安装node.js.2.安装淘宝镜像cnpm,在命令窗口输入: npm install -g cnpm --registry=https://registry.npm.tao ...