RestTemplate 最详解

目录

  • RestTemplate 简单使用
    • 创建 RestTemplate
    • 接口调用
  • 一些其他设置
  • 简单总结
  • 公众号推荐

在项目中,当我们需要远程调用一个 HTTP 接口时,我们经常会用到 RestTemplate 这个类。这个类是 Spring 框架提供的一个工具类。Spring 官网对它的介绍如下:

RestTemplate: The original Spring REST client with a synchronous, template method API.

从上面的介绍中我们可以知道:RestTemplate 是一个同步的 Rest API 客户端。下面我们就来介绍下 RestTemplate 的常用功能。

RestTemplate 简单使用#

RestTemplate 提供高度封装的接口,可以让我们非常方便地进行 Rest API 调用。常见的方法如下:

表格:RestTemplate 的方法

上面的方法我们大致可以分为三组:

  • getForObject --- optionsForAllow 分为一组,这类方法是常规的 Rest API(GET、POST、DELETE 等)方法调用;
  • exchange:接收一个 RequestEntity 参数,可以自己设置 HTTP method,URL,headers 和 body,返回 ResponseEntity;
  • execute:通过 callback 接口,可以对请求和返回做更加全面的自定义控制。

一般情况下,我们使用第一组和第二组方法就够了。

创建 RestTemplate

@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory) {RestTemplate restTemplate = new RestTemplate(factory);return restTemplate;
}@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory() {SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();factory.setReadTimeout(5000);factory.setConnectTimeout(15000);// 设置代理//factory.setProxy(null);return factory;
}

创建 RestTemplate 时需要一个 ClientHttpRequestFactory,通过这个请求工厂,我们可以统一设置请求的超时时间,设置代理以及一些其他细节。通过上面代码配置后,我们直接在代码中注入 RestTemplate 就可以使用了。

有时候我们还需要通过 ClientHttpRequestFactory 配置最大链接数,忽略SSL证书等,大家需要的时候可以自己查看代码设置。

接口调用#

1. 普通接口调用

Map<String, String> vars = Collections.singletonMap("hotel", "42");
// 通过 GET 方式调用,返回一个 String 值,还可以给 URL 变量设置值(也可通过 uriTemplateHandler 这个属性自定义)
String result = restTemplate.getForObject("https://example.com/hotels/{hotel}/rooms/{hotel}", String.class, vars);String url = "http://127.0.0.1:8080/hello";
JSONObject param = new JSONObject();
//restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type;
// 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换
ResponseEntity<JSONObject> responseEntity=restTemplate.postForEntity(url,params,JSONObject.class);
int statusCodeValue = responseEntity.getStatusCodeValue();
HttpHeaders headers = responseEntity.getHeaders();
JSONObject body = responseEntity.getBody();

来源:RestTemplate 最详解 - 程序员自由之路 - 博客园

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

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

相关文章

Gartner预计2018年全球人工智能商业价值将达到1.2万亿美元

来源&#xff1a;亿欧根据全球领先的信息技术研究与顾问公司Gartner的预测&#xff0c;人工智能&#xff08;AI&#xff09;产生的全球商业价值预计将在2018年达到1.2万亿美元&#xff0c;比2017年增长70%。此外&#xff0c;Gartner预计到2022年&#xff0c;人工智能衍生的商业…

王爽 汇编语言第三版 问题 7.9 将 datasg 段中前4个字母变成大写(汇编中的双重循环)

问题 7.9&#xff1a; 将 datasg 段中前 4 个字母变成大写 汇编代码&#xff1a; assume cs:codesg,ss:stacksg,ds:datasgstacksg segmentdb 0,0,0,0,0,0,0,0 stacksg endsdatasg segmentdb 1. display db 2. brows db 3. replace db 4. modify datas…

消费机器人今年爆发!四大品类瓜分百亿蛋糕

来源&#xff1a;智东西摘要&#xff1a;就扫地机器人、智能音箱、民用机器人和智能服务机器人的零售数据出发&#xff0c;盘点消费级机器人2018年的市场潜力。近两年&#xff0c;人工智能技术的迅猛发展。特别是视听觉语义理解、自然语言处理、神经网络、情感识别算法等的发展…

scrapy学习笔记(二)进阶使用

From&#xff1a;https://www.imooc.com/article/21839 scrapy提升篇之配置&#xff1a;https://segmentfault.com/a/1190000009321902 前面我写了一篇《scrapy快速入门》&#xff0c;简单介绍了一点scrapy的知识。这次就来介绍一些scrapy的进阶知识&#xff0c;做一些真正有用…

王爽 汇编语言第三版 第7章 --- 更灵活的定位内存地址的方法(可以理解为 数组形式的内存定位)

汇编语言&#xff08;第三版&#xff09;王爽著 的十二个实验&#xff1a;https://blog.csdn.net/OrangeHap/article/details/89791064 大小端 字节对齐 对于 arm&#xff0c;intel 这种 x86 构架的复杂指令 CPU&#xff0c;整数在内存中是倒着存放的&#xff0c;低地址放低位&…

从文本分类问题中的特征词选择算法追踪如何将数学知识,数学理论迁移到实际工程中去...

博文转载请注明作者和出处&#xff08;作者&#xff1a;finallyliuyu &#xff1a;出处博客园&#xff09; 附&#xff1a;《卡方特征词选择算法》 《DF特征词选择算法》 一.数学背景 将数学知识、数学理论以及数学思想迁移到实际工程问题中&#xff0c;经常会促进工程问题的圆…

裁掉杰森伯恩,招揽人工智能,AI间谍厉害在哪?

来源&#xff1a;智能相对论 作者&#xff1a; 岳文纶摘要&#xff1a;CIA宣布&#xff0c;计划用人工智能取代间谍。其技术开发副主任Dawn Meyerriecks表示&#xff0c;CIA正在适应新的情形&#xff0c;其主要对手是一台机器&#xff0c;而不是一名外国间谍。间谍&#xff0…

一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-通过SQL实现特殊业务...

前面的四篇文章演示ORM的一些常规操作与配置&#xff0c;通过前面的文章&#xff0c;应用开发人员要可以使用ORM开发出简单的应用&#xff0c;但是&#xff0c;ORM也不是万能钥匙&#xff0c;在业务应用中&#xff0c;还有很多是ORM解决不了的问题&#xff0c;对于这些问题&…

英特尔详解5G将如何助力VR的未来发展

来源&#xff1a;亿欧智库摘要&#xff1a;英特尔中国研究院通过重点研究通信和计算融合的方式&#xff0c;解释了5G在面对巨大数据洪流时数据处理和传输的方式&#xff0c;通过边缘计算的新方法&#xff0c;使VR达到传输要求。打造一个高效的通信和计算系统&#xff0c;通往我…

王爽 汇编语言第三版 第8章( 寻址方式 ) --- 数据处理的两个问题

第八章 数据处理的两个基本问题 8.6 综合应用 示例代码 1&#xff1a; assume cs:codesg,ds:datasgdatasg segmentdb 1024 dup (0) datasg endscodesg segmentstart:mov ax,datasgmov ds,axmov bx,60h ; 确定记录地址 ds:bxmov word ptr [bx0ch],38 ;…

综述AI未来:神经科学启发的类脑计算

来源&#xff1a;运筹OR帷幄 作者&#xff1a;周岩摘要&#xff1a;脑科学是一门实践性很强的交叉学科&#xff0c;包含了神经科学&#xff0c;医学&#xff0c;数学&#xff0c;计算科学等多门学科。随着近几年深度学习的迅速发展&#xff0c;人工智能成为了无论学术界还是互…

[翻译]Wine完全使用指南——从基本到高级[转]

转载自 : http://forum.ubuntu.org.cn/viewtopic.php?t72933为了回应最近网友的一些普遍问题&#xff0c;特此作以下说明&#xff1a; 1、如果发现wine的注册表没有相应的键值&#xff0c;要自己创建。有时候用命令不行的话&#xff0c;只能手动一个个添加。 2、wine还是一个…

Flask --- 框架快速入门

From&#xff1a;http://docs.jinkan.org/docs/flask/quickstart.html Flask 用户指南&#xff1a;http://docs.jinkan.org/docs/flask/index.html w3cschool.cn 的 Flask 教程&#xff1a;https://www.w3cschool.cn/flask/ 《Flask Web开发&#xff1a;基于Python的Web应用…

AI与基因科学的对话:从“人工智能”到“动物智能”

来源&#xff1a;亿欧网有人的地方就有江湖&#xff0c;巨头们一次次的“技术战役”就是现代江湖的样子。各家企业牢牢把握住科技就是第一生产力的关键&#xff0c;不断的较量平台、技术、场景、生态等多方面的综合实力&#xff0c;你方唱罢我登场好不热闹。在我们的认知中&…

顺序程序设计03 - 零基础入门学习C语言09

第三章&#xff1a;顺序程序设计03 让编程改变世界 Change the world by program 题目&#xff1a;输入三角形的三边长&#xff0c;求三角形面积。 已知三角形的三边长a,b,c&#xff0c;则该三角形的面积公式为&#xff1a; [caption id"attachment_64" align"a…

王爽 汇编语言第三版 第9章 转移指令的原理

第九章 转移指令的原理 汇编代码&#xff1a; assume cs:codesgcodesg segments: mov ax,bx ; mov ax,bx 的机器码占两个字节mov si, offset smov di, offset s0mov ax, cs:[si]mov cs:[di], axs0:nop ; nop 机器码占一个字节nopmov ax, 4c00hint 21h codesg ends end s 9…

触摸心灵-触觉感知和发展的模型

来源&#xff1a;计算机触觉触觉感知和发展的模型触觉感知模型是数学结构&#xff0c;试图解释触觉积累关于环境中的物体和试剂的信息的过程。 由于触觉是一种主动的感觉&#xff0c;即感觉器官在感觉过程中被移动&#xff0c;所以这些模型经常描述优化感知结果的运动策略。 触…

MFC 最详细入门教程

From&#xff1a;https://blog.csdn.net/wang18323834864/article/details/78621633/ Visual Studio 2019&#xff1a;https://visualstudio.microsoft.com/zh-hans/ 鸡啄米 ----- VS2010/MFC编程入门教程之目录和总结&#xff1a;http://www.jizhuomi.com/software/257.html …

没中、美这么大的统一市场,欧盟人工智能发展面临双重挑战

来源&#xff1a;澎湃新闻 作者&#xff1a;胡逸涵为在人工智能领域追赶中美两国&#xff0c;近日&#xff0c;欧盟将2020年前对人工智能&#xff08;AI&#xff09;的投资额增加约70%&#xff0c;至15亿欧元。欧盟希望到2020年底&#xff0c;整个欧盟在AI技术领域&#xff0…