RestTemplate的传参实现(Get、Put、Post)

 更新时间:2026年06月24日 10:44:22   作者:TwoYellowGuns  
RestTemplate配置项解析与GET、POST、PUT、DELETE请求方法详解,涵盖setProxy、setChunkSize、setConnectTimeout等核心配置项,全面覆盖RestTemplate使用场景

一、RestTemplate 简介

RestTemplate 概述

RestTemplate 的配置项

  • setBufferRequestBody

是否是否缓冲流来存储请求体,默认true

  • setProxy

设置代理对象

  • setChunkSize

设置每次传输字节长度,与 setBufferRequestBody(false) 结合使用

  • setConnectTimeout

设置连接超时时间,默认 -1

  • setReadTimeout

设置读取内容超时时间,默认 -1

  • setOutputStreaming

设置Connection是否设置输出流程

  • setTaskExecutor

设置异步回调执行器

RestTemplate 请求方式

  • GET

通过请求URI得到资源

  • POST

用于添加新的内容

  • PUT

用于修改某个内容,若不存在则添加

  • DELETE

删除某个内容

  • OPTIONS

询问可以执行哪些方法

  • HEAD

类似于GET, 但是不返回body信息,用于检查对象是否存在,以及得到对象的元数据

  • CONNECT

用于代理进行传输,如使用SSL

  • TRACE

用于远程诊断服务器

二、RestTemplate 使用

Get请求方式

  • getForEntity()

发送一个HTTP GET请求,返回的ResponseEntity包含了响应体所映射成的对象

  • getForObject()

发送一个HTTP GET请求,返回的请求体将映射为一个对象

(1)请求方

@RestController
public class UserRibbonController {
    @Resource
    private RestTemplate restTemplate;
    //没有参数
    @GetMapping("/user")
    public Result select() throws Exception{
    	return restTemplate.getForObject("http://eureka-client1/select/", Result.class);
    }
    //单个参数
    @GetMapping("/selectById/{uid}")
    public Result selectById(@PathVariable("uid") int uid) throws Exception{
    	return restTemplate.getForObject("http://eureka-client1/selectById/" + uid, Result.class);
    }
    //多个参数
    @GetMapping("/updateById")
    public Result updateById(Users users) throws Exception{
    	return restTemplate.getForObject("http://eureka-client1/updateById/" + users.getPassword() +"/"+ users.getUid(), Result.class);
   }
}

(2)接收方

@RestController
public class UserClientController {
    @Resource
    private UserService us;
    //没有参数
    @GetMapping("/select")
    public Result select() throws Exception{
    	Result result = new Result();
    	List<Users> list = us.select();
    	if(list.size() > 0) {
    		result.setList(list);
    		result.setCode("success");
    	}else {
    		result.setMessage("error");
    	}
    	return result;
    }
    //单个参数
    @GetMapping("/selectById/{uid}")
    public Result selectById(@PathVariable("uid") int uid) throws Exception{
    	Result result = new Result();
    	Users users = us.selectById(uid);
    	if(users != null) {
    		result.setObject(users);
    		result.setCode("success");
    	}else {
    		result.setMessage("error");
    	}
    	return result;
    }
    //多个参数
    @GetMapping("/updateById/{password}/{uid}")
    public Result updateById(@PathVariable("password") String password, @PathVariable("uid") int uid) throws Exception{
    	Users users = new Users();
    	users.setUid(uid);
    	users.setPassword(password);
    	Result result = new Result();
    	us.updateById(users);
    	result.setCode("success");
    	return result;
    }
}

Post 请求方式

  • postForEntity()

POST 数据到一个URL,返回包含一个对象的ResponseEntity,这个对象是从响应体中映射得到的。

  • postForObject()

POST 数据到一个URL,返回根据响应体匹配形成的对象。

  • postForLocation()

POST 数据到一个URL,返回新创建资源的URL

(1)请求方

@RestController
public class UserClientController {
    @Resource
    private RestTemplate restTemplate;    
 	@GetMapping("/updateById")
    public Result updateById(Users users) throws Exception{
    	Result result = restTemplate.postForObject("http://eureka-client1/updateById", users, Result.class);
    	return result;
    }
}

(2)接收方

@RestController
public class UserClientController {
    @Resource
    private UserService us;
	@PostMapping("updateById")
   	public Result updateById(@RequestBody Users users) throws Exception{
    	System.out.println(users.getUsername());
    	Result result = new Result();
    	us.updateById(users);
    	result.setCode("success");
    	return result;
   	}
   }

Put 请求方式

  • put()

PUT 资源到特定的URL,put请求方式没有返回参数

(1)请求方

@RestController
public class UserRibbonController {
    @Resource
    private RestTemplate restTemplate;    
    @GetMapping("/updateById")
    public Result updateById(Users users) throws Exception{
    	restTemplate.put("http://eureka-client1/updateById", users, 11);
    	Result result = new Result();
    	result.setCode("success");
    	return result;
    }
}

(2)接收方

@RestController
public class UserClientController {
    @Resource
    private UserService us;
    @PutMapping("updateById")
    public void updateById(@RequestBody Users users) throws Exception{
    	us.updateById(users);
    }
}

Delete 请求

  • delete()

在特定的URL上对资源执行HTTP DELETE操作

RestTemplate 其他方法

  • exchange()

在URL上执行特定的HTTP方法,返回包含对象的ResponseEntity,这个对象是从响应体中映射得到的

  • execute()

在URL上执行特定的HTTP方法,返回一个从响应体映射得到的对象

  • headForHeaders()

发送HTTP HEAD请求,返回包含特定资源URL的HTTP头

  • optionsForAllow()

发送HTTP OPTIONS请求,返回对特定URL的Allow头信息

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringCloud 如何提取公共配置

    SpringCloud 如何提取公共配置

    这篇文章主要介绍了SpringCloud 提取公共配置的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 用SpringBoot框架来接收multipart/form-data文件方式

    用SpringBoot框架来接收multipart/form-data文件方式

    这篇文章主要介绍了用SpringBoot框架来接收multipart/form-data文件方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • RabbitMQ的基础知识

    RabbitMQ的基础知识

    本文详细介绍了RabbitMQ的基础知识,通过本文,我们可以了解到MQ工作原理、交换机等相关知识,有需要的朋友可以参考一下
    2021-08-08
  • 关于mybatis使用${}时sql注入的问题

    关于mybatis使用${}时sql注入的问题

    这篇文章主要介绍了关于mybatis使用${}时sql注入的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Nacos配置中心集群原理及源码分析

    Nacos配置中心集群原理及源码分析

    这篇文章主要为大家介绍了Nacos配置中心集群原理及源码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-03-03
  • Spring Boot日志的打印与持久化详细解析

    Spring Boot日志的打印与持久化详细解析

    Spring Boot默认使用SLF4J+Logback 记录日志,并提供了默认配置,即使我们不进行任何额外配,也可以使用SLF4J+Logback进行日志输出
    2022-07-07
  • java中阻塞队列和非阻塞队列的实现

    java中阻塞队列和非阻塞队列的实现

    在Java并发编程中,阻塞队列和非阻塞队列是两种主要的队列类型,分别适用于不同的场景,了解这两种队列的特点和工作机制,可以帮助开发者更好地选择合适的数据结构解决并发问题
    2024-10-10
  • SpringBoot中时间格式化的五种方法汇总

    SpringBoot中时间格式化的五种方法汇总

    时间格式化在项目中使用频率是非常高的,这篇文章主要给大家介绍了关于SpringBoot中时间格式化的五种方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-07-07
  • 带你用Java全面剖析类和对象

    带你用Java全面剖析类和对象

    下面小编就为大家带来一篇全面理解Java类和对象。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-09-09
  • spring cloud config和bus组件实现自动刷新功能

    spring cloud config和bus组件实现自动刷新功能

    今天通过本文给大家介绍spring cloud config和bus组件实现自动刷新功能,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-10-10

最新评论