一 例:需要在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的更多相关文章

  1. JHipster技术栈定制 - 基于UAA的微服务之间安全调用

    本文通过代码实例演示如何通过UAA实现微服务之间的安全调用. uaa: 身份认证服务,同时也作为被调用的资源服务.服务端口9999. microservice1: 调用uaa的消费者服务,服务端口80 ...

  2. 微服务之间如何共享DTO?

    1. 概述 近些年来,微服务变得越来越流行.微服务基本特征是模块化.独立.易于扩展的.它们之间需要协同工作并交换数据.为了实现这一点,我们创建了名为 DTO 的共享数据传输对象.在本文中,我们将介绍在 ...

  3. spring cloud实战与思考(二) 微服务之间通过fiegn上传一组文件(上)

    需求场景: 微服务之间调用接口一次性上传多个文件. 上传文件的同时附带其他参数. 多个文件能有效的区分开,以便进行不同处理. Spring cloud的微服务之间接口调用使用Feign.原装的Feig ...

  4. spring cloud实战与思考(三) 微服务之间通过fiegn上传一组文件(下)

    需求场景: 用户调用微服务1的接口上传一组图片和对应的描述信息.微服务1处理后,再将这组图片上传给微服务2进行处理.各个微服务能区分开不同的图片进行不同处理. 上一篇博客已经讨论了在微服务之间传递一组 ...

  5. SOA和微服务之间的区别

    近几年,我们有很多文章对SOA和微服务之间的不同点和相似点进行了分析.有些人认为SOA有很多地方是值得微服务学习的,而有些人则认为区别对待微服务和SOA会更好.而Neal Ford认为,将单体迁移到面 ...

  6. SpringCloud实战 | 第五篇:SpringCloud整合OpenFeign实现微服务之间的调用

    一. 前言 微服务实战系列是基于开源微服务项目 有来商城youlai-mall 版本升级为背景来开展的,本篇则是讲述SpringCloud整合OpenFeign实现微服务之间的相互调用,有兴趣的朋友可 ...

  7. 微服务之间的调用(Ribbon与Feign)

    来源:https://blog.csdn.net/jrn1012/article/details/77837658 使用Eureka作为服务注册中心,在服务启动后,各个微服务会将自己注册到Eureka ...

  8. 阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别(转载)

    转载来源:https://youzhixueyuan.com/the-difference-between-restful-soap-rpc-soa-and-micro-service.html 内容 ...

  9. 服务注册中心之ZooKeeper系列(二) 实现一个简单微服务之间调用的例子

    上一篇文章简单介绍了ZooKeeper,讲了分布式中,每个微服务都会部署到多台服务器上,那服务之间的调用是怎么样的呢?如图: 1.集群A中的服务调用者如何发现集群B中的服务提供者呢? 2.集群A中的服 ...

随机推荐

  1. 记一次sshd启动报错,Failed to start OpenSSH server daemon.

    sshd -t [root@mysql5-slave proj]# sshd -t @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...

  2. Percona MySQL 5.7 Linux通用二进制包安装(CentOS 6)

    Linux 安装 Percona http://blog.itpub.net/26506993/viewspace-2136501/ https://www.cnblogs.com/snowwhite ...

  3. springboot2.0动态多数据源切换

    摘要:springboot1.x到springboot2.0配置变化有一点变化,网上关于springboot2.0配置多数据源的资料也比较少,为了让大家配置多数据源从springboot1.x升级到s ...

  4. python使用xlrd读取excel数据时,整数变小数的解决办法

    python使用xlrd读取excel数据时,整数变小数: 解决方法: 1.有个比较简单的就是在数字和日期的单元格内容前加上一个英文的逗号即可.如果数据比较多,也可以批量加英文逗号的前缀(网上都有方法 ...

  5. 英文文档帮查&翻译计划

    以CSDN为首,知乎其次,cnblog带路的一大批博客上充斥着大量低质量的编程入门教程,代码粗制滥造,毫无缩进,没有高亮,东抄西抄.初学者如果长期参照这种垃圾博客来解决问题,将会适得其反,走入歧途. ...

  6. leetcode771

    int numJewelsInStones(string J, string S) { set<char> st; ; for (auto c : J) { st.insert(c); } ...

  7. sys模块的介绍

    sys.argv           命令行参数List,第一个元素是程序本身路径 sys.exit(n)        退出程序,正常退出时exit(0) sys.version        获取 ...

  8. docker mysql Exit 1

    用laradock启动mysql时,state总是 Exit 1 ,docker-compose build后也没有效果 这时应该在-/.laradock/data(.env的DATA_PATH_HO ...

  9. 1011 A+B 和 C (15 分)

    pragma warning(disable:4996) a-c+b>0? 考虑可能越界 在循环体内判断,然后有序号输出 输入输出格式看多个题然后总结下 不会处理单行数据 include < ...

  10. ArcGIS自定义工具箱-修复损坏的工作空间

    ArcGIS自定义工具箱-修复损坏的工作空间 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:替换数据源的工作空间 用途:针对损坏的数据源,批量进行修复 案例数 ...