当前位置: 首页 > news >正文

微服务远程调用 RestTemplate

Spring给我们提供了一个RestTemplate的API,可以方便的实现Http请求的发送。

同步客户端执行HTTP请求,在底层HTTP客户端库(如JDK HttpURLConnection、Apache HttpComponents等)上公开一个简单的模板方法API。RestTemplate通过HTTP方法为常见场景提供了模板,此外还提供了支持不太常见情况的通用交换和执行方法。 RestTemplate通常用作共享组件。然而,它的配置不支持并发修改,因此它的配置通常是在启动时准备的。如果需要,您可以在启动时创建多个不同配置的RestTemplate实例。如果这些实例需要共享HTTP客户端资源,它们可以使用相同的底层ClientHttpRequestFactory。 注意:从5.0开始,这个类处于维护模式,只有对更改和错误的小请求才会被接受。请考虑使用org.springframework.web.react .client. webclient,它有更现代的API,支持同步、异步和流场景。

1. 添加依赖

首先,确保你的Spring Boot项目中已经添加了spring-web依赖,因为RestTemplate类包含在这个模块中。

<!-- 在pom.xml中添加依赖 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.创建配置类

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;@Configuration
public class RestTemplateConfig {@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}
}

3. 使用RestTemplate

在你的服务类中,你可以通过注入RestTemplate Bean来使用它。

import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import org.springframework.stereotype.Service;@Service
public class MyService {private final RestTemplate restTemplate;// 通过构造器注入 RestTemplatepublic MyService(RestTemplate restTemplate) {this.restTemplate = restTemplate;}public String fetchDataFromApi(String url) {// 使用 RestTemplate 发送 GET 请求ResponseEntity<String> response = restTemplate.exchange(url,//请求路径org.springframework.http.HttpMethod.GET,//请求方式null,//请求实体String.class  // 指定响应体类型为 String);if(!response.getStatusCode().is2xxSuccessful()){// 查询失败,直接结束return;}// 返回响应体return response.getBody();}
}

相关文章:

  • 【MySQL精通之路】SQL优化(1)-查询优化(8)-嵌套联接优化
  • 在docker中安装官方rocketmq
  • 【C语言回顾】联合和枚举
  • CTFshow之文件上传web入门151关-161关解密。包教包会!!!!
  • 基于树的存储数据结构demo
  • Ubuntu系统版本查看办法
  • (Qt) 默认QtWidget应用包含什么?
  • 汽车工厂安灯系统能够快速知晓生产现场的状况
  • github下载代码
  • Docker 部署 Nginx 实现一个极简的 负载均衡
  • docker 笔记汇总
  • Java入门基础学习笔记36——面向对象基础
  • 思科模拟器--03.RIP协议路由--24.5.17
  • FOC之反park变化推导笔记
  • mysql 多表关联查询性能优化-同一sql不同的执行计划
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • angular2开源库收集
  • Debian下无root权限使用Python访问Oracle
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Docker容器管理
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JavaScript设计模式之工厂模式
  • Just for fun——迅速写完快速排序
  • Promise面试题2实现异步串行执行
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Redis的resp协议
  • Shell编程
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • vue自定义指令实现v-tap插件
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 看域名解析域名安全对SEO的影响
  • 码农张的Bug人生 - 见面之礼
  • 如何胜任知名企业的商业数据分析师?
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 我建了一个叫Hello World的项目
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • !!java web学习笔记(一到五)
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)计算机毕业设计大学生兼职系统
  • (接口封装)
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)LINQ之路
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (转载)OpenStack Hacker养成指南
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008