Spring: Spring自带的Http客户端RestTemplate

文章目录

  • 一、介绍
  • 二、使用
    • 1、添加依赖
    • 2、创建 RestTemplate 实例
    • 3、使用 RestTemplate
      • (1)GET请求
      • (2)POST请求

一、介绍

RestTemplate 是 Spring 框架中用于发送 HTTP 请求的客户端工具类。它简化了与 REST 服务的交互,并提供了许多方法来发送 HTTP 请求,如 GET、POST、PUT、DELETE 等。

二、使用

1、添加依赖

如果你使用 Maven,确保你的项目中包含了 Spring Web 的依赖。

<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-web</artifactId>  
</dependency>

注意:这个依赖通常已经包含在 Spring Boot 的 web 应用程序的起步依赖中。

2、创建 RestTemplate 实例

在配置类中创建实例。

@Configuration  
public class AppConfig {  @Bean  public RestTemplate restTemplate() {  return new RestTemplate();  }  
}

或者使用 Spring Boot 2.0 之后的 RestTemplateBuilder 来创建它,这样可以更容易地进行自定义配置。

3、使用 RestTemplate

(1)GET请求

  • 不带参数的get请求
@Service  
public class MyService {  private final RestTemplate restTemplate;  @Autowired  public MyService(RestTemplate restTemplate) {  this.restTemplate = restTemplate;  }  public String getDataFromRestService() {  String url = "http://example.com/api/data";  ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);  return response.getBody();  }  
}
  • 带请求参数的get请求
@Service  
public class MyService {  private final RestTemplate restTemplate;  @Autowired  public MyService(RestTemplate restTemplate) {  this.restTemplate = restTemplate;  }  public String getDataFromRestService() {  String url = "http://example.com/api/data"; HttpHeaders headers = new HttpHeaders()// 设置后端请求Authorization认证headers.set("Authorization", "xxx");HttpEntity<Object> entity = new HttpEntity<>(authHeader);// 添加请求参数,最终的url为:http://example.com/api/data?pageNum=1&pageSize=10UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);builder.queryParam("pageNum", 1);builder.queryParam("pageSize", 10);ResponseEntity<Object> response = restTemplate.exchange(url, HttpMethod.GET, entity, Object.class);return response.getBody();  }  
}
  • 带路径求情参数的get请求
@Service  
public class MyService {  private final RestTemplate restTemplate;  @Autowired  public MyService(RestTemplate restTemplate) {  this.restTemplate = restTemplate;  }  public String getDataFromRestService() {  String url = "http://example.com/api/data/{id}"; HttpHeaders headers = new HttpHeaders()// 设置后端请求Authorization认证headers.set("Authorization", "xxx");HttpEntity<Object> entity = new HttpEntity<>(authHeader);	// 设置路径参数Map<String, String> uriVariables = Collections.singletonMap("id", "123");// 添加请求参数,最终的url为:http://example.com/api/data?pageNum=1&pageSize=10UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);builder.queryParam("pageNum", 1);builder.queryParam("pageSize", 10);ResponseEntity<Object> response = restTemplate.exchange(url, HttpMethod.GET, entity, Object.class, uriVariables);return response.getBody();  }  
}

(2)POST请求

带认证的POST请求

@Service  
public class MyService {  private final RestTemplate restTemplate;  @Autowired  public MyService(RestTemplate restTemplate) {  this.restTemplate = restTemplate;  }  public String getDataFromRestService() {  String url = "http://example.com/api/data"; HttpHeaders headers = new HttpHeaders()// 设置后端请求Authorization认证headers.set("Authorization", "xxx");HttpEntity<Object> entity = new HttpEntity<>(authHeader);ResponseEntity<Object> response= restTemplate.postForEntity(url , entity, Object.class);return response.getBody();  }  
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/840024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql中select子查(select中的select子查询)询探索

mysql中select子查询探索 表结构 emp ---------------------------------------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | ---------------------------------…

民国漫画杂志《时代漫画》第18期.PDF

时代漫画18.PDF: https://url03.ctfile.com/f/1779803-1248612707-27e56b?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络&#xff01;

THunt:免费助力跨境电商

Temu是什么&#xff1f; Temu是一个专注于跨境电商的在线平台&#xff0c;帮助卖家了解什么是热门产品。 THunt 您可以使用THunt快速比价&#xff0c;快速评估卖家信誉&#xff0c;最大化您的利润空间&#xff01;您还可以更好地了解竞争格局并做出更具竞争力的决策。 Thunt…

春秋CVE-2022-23906

简介 CMS Made Simple v2.2.15 被发现包含通过上传图片功能的远程命令执行 (RCE) 漏洞。此漏洞通过精心制作的图像文件被利用。 正文 1.进入靶场2.进入登录界面&#xff0c;弱口令admin/123456 3.进入后台&#xff0c;文件上传点 4.上传一句话木马图片 5.复制图片&#xf…

细胞冻存——让你的细胞“长生不老”

《星际穿越》电影中提到漫长的太空旅程中&#xff0c;宇航员可以进入休眠水床休眠&#xff0c;并自行设定唤醒时间。在《异形》《深空失忆》《三体》等科幻作品中&#xff0c;都出现此类技术。《三体》中&#xff0c;休眠后来成为人类最普遍的一项技术。技术上的人类低温休眠&a…

huggingface的load_dataset()函数

第一种&#xff1a;从huggingface官网加载&#xff1a; from datasets import load_dataset dataset load_dataset(pathsquad, splittrain)path等于相关数据集的名字就能下载并加载相关数据集 第二种&#xff1a;从本地加载数据集 用path参数指定数据集格式 json格式&…

OpenCV:入门(五)

图像梯度 图像梯度计算的是图像变化的速度。对于图像的边缘部分&#xff0c;其灰度值变化较大&#xff0c;梯度值也 较大&#xff1b;相反&#xff0c;对于图像中比较平滑的部分&#xff0c;其灰度值变化较小&#xff0c;相应的梯度值也较小。一般情 况下&#xff0c;图像梯度计…

剖析并实现C++17新特性的Any类型

问题&#xff1a; 对于这样的场景&#xff1a;对于一些CS&#xff08;客户端-服务端&#xff09;模型&#xff0c;当用户在客户端传入相应的事件时&#xff0c;我们需要实现框架即在服务端去分配线程处理这些事件&#xff0c;即调用用户的事件处理函数&#xff0c;那么对于不同…

中文信息期刊投稿邮箱

《中文信息》杂志是国家新闻出版总署批准的国家级刊物&#xff08;月刊&#xff09;&#xff0c;国内外公开发行&#xff0c;大十六开印刷。本刊主要反映我国中文信息处理的学术水平&#xff0c;重点刊登科技、经济、教育等领域的基础理论、科研与应用技术的学术论文&#xff0…

Rust:如何使用 Pytorch 深度学习模型?

以下笔记内容仅供参考&#xff0c;尚未进行实际验证。 在Rust中使用PyTorch通常涉及使用一个称为tch的第三方crate&#xff0c;它是PyTorch的C API的Rust绑定。下面是一个简单的例子&#xff0c;展示了如何在Rust程序中加载一个PyTorch模型并进行预测。 首先&#xff0c;你需要…

第2天 搭建安全拓展_小迪网络安全笔记

1.常见搭建平台脚本使用: 例如 phpstudy IIS Nginx(俗称中间件): 什么是中间件: 中间件是介于应用系统和系统软件之间的一类软件&#xff0c;它使用系统软件所提供的基础服务&#xff08;功能&#xff09;&#xff0c;衔接网络上应用系统的各个部分或不同的应用&#…

vue2引入brand.vue和brand-add-or-update.vue后重启项目报错解决方案

最近在用粒谷商城项目练手&#xff0c;学习到P59时引入品牌两个vue文件&#xff0c;重启(npm run dev)项目报错: ERROR Failed to compile with 2 errors 12:11:59Th…

前端调用浏览器录音功能且生成文件(vue)

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; 首先在页面中给两个按钮&#xff0c;分别是“开始录音”&#xff0c;“结束录音”。以及录音成功后生成一个下载语音的链接。 1. 先看页面展示 <template><div><button click"startRecording…

【论文阅读】Rank-DETR(NIPS‘23)

paper:https://arxiv.org/abs/2310.08854 code:https://github.com/LeapLabTHU/Rank-DETR

Go 生成UUID唯一标识

什么是UUID 通用唯一识别码&#xff08;英语&#xff1a;Universally Unique Identifier&#xff0c;简称UUID&#xff09;是一种软件建构的标准&#xff0c;亦为自由软件基金会组织在分散式计算环境领域的一部份。 UUID的目的&#xff0c;是让分散式系统中的所有元素&#x…

微信小程序视频怎么保存到本地

你是否遇到过在微信小程序中发现了精彩的视频&#xff0c;却不知道如何将其保存到本地的困扰&#xff1f;别担心&#xff0c;这篇文章将为您揭示2024年最新的保存方法&#xff0c;让您轻松下载和保留这些珍贵的视频内容。不管您是使用安卓设备还是苹果设备&#xff0c;我们都为…

SD3303A大功率高精度LED驱动芯片3W低功耗高效率工作温度40c+85%

SD3303A是一款大功率高亮度LED驱动芯片&#xff0c;可以提供 1A的电流驱动3W的LED。具有高效率&#xff0c;低功耗等特点 &#xff0c;适用于电池供电的LED照明设备。 SD3303A具有开路保护和过温保护。 SD3303A需要使用两颗10uF(或者更大)的瓷 片电容&#xff0c;来保证电路性能…

学生手机管理方案

咱们现在的学生&#xff0c;手机几乎成了标配。所以问题就来了&#xff0c;怎么管理这些手机&#xff0c;让手机在课堂上不成为学习的干扰&#xff1f; 先得搞明白&#xff0c;手机在学生手里上该扮演什么角色。手机确实能帮学生查资料、交流学习&#xff0c;甚至写作业&#x…

Log360:护航安全,远离暗网风险

暗网有时候就像是一个神秘的地下世界&#xff0c;是互联网的隐蔽角落&#xff0c;没有任何规则。这是一个被盗数据交易、网络犯罪分子策划下一步攻击的地方。但仅仅因为它黑暗&#xff0c;不意味着你要对潜在的威胁视而不见。 暗网 这就是ManageEngine Log360的用武之地&…

用Visual Studio进行Qt开发的Cmake模板

使用Visual Studio进行Qt开发的时候&#xff0c;我们可以借用Cmake的moc功能和相应对Qt的支持生成VS工程。 文件组织 Root │ cmake.sh // cmake执行脚本 │ CMakeLists.txt // 根目录cmake文件 │ README.md │ text.txt ├─bin …