一 例:需要在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. hash的排序(转载)

    sort函数 sort LISTsort BLOCK LISTsort SUBNAME LIST sort 的用法有如上3种形式.它对LIST进行排序,并返回排序后的列表.假如忽略了SUBNAME或B ...

  2. c# 数据结构 ArrayList

    数据结构 描述数据之间的关系 行为:添加数据,删除数据,插入数据,查找数据,修改数据 追加数据:向这个结构的末尾添加一个数据 删除数据:在这个结构中删除你指定的数据 插入数据:向这个结构中某一个位置插 ...

  3. django之 使用py文件操作django项目中的表

    要想在一个另外的py文件中操作django,可以使用如下的代码 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE",' ...

  4. flask&nginx&gunicore部署

    部署流程: 1.处理服务器的基础环境, 安装和Python有关的软件 安装Python3-pip, Python3-dev apt install python3-pip apt install py ...

  5. Maven CXF wsdl2java XMLGregorianCalendar类型更改

    jaxb-bindings.xml配置: <?xml version="1.0" encoding="UTF-8"?> <jaxb:bindi ...

  6. python变量、注释、程序交互、格式化输入、基本运算符

    变量                                                                                                  ...

  7. Mybatis-spring 动态代理

    1.UserMapper.java package com.cn.mapper; import java.util.List; import com.cn.pojo.User; public inte ...

  8. adobe cc最新版 软件安装与激活

     adobe cc最新版 软件安装与激活:https://m.weike.fm/lecture/4912961 说明#:Adobe CC2017的所有软件都可以按照以上方法进行安装,如:Premier ...

  9. TXLSReadWriteII 公式计算

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  10. cut命令详解

    1.简介:cut:以某种方式按照文件的行进行分割 2.参数列表: -b:仅显示行中指定直接范围的内容: -c:仅显示行中指定范围的字符: -d:指定字段的分隔符,默认的字段分隔符为“TAB”: -f: ...