java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > RestTemplate传参(Get、Put、Post)

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

作者:TwoYellowGuns

RestTemplate配置项解析与GET、POST、PUT、DELETE请求方法详解,涵盖setProxy、setChunkSize、setConnectTimeout等核心配置项,全面覆盖RestTemplate使用场景

一、RestTemplate 简介

RestTemplate 概述

RestTemplate 的配置项

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

设置代理对象

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

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

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

设置Connection是否设置输出流程

设置异步回调执行器

RestTemplate 请求方式

通过请求URI得到资源

用于添加新的内容

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

删除某个内容

询问可以执行哪些方法

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

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

用于远程诊断服务器

二、RestTemplate 使用

Get请求方式

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

发送一个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 请求方式

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

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

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 资源到特定的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 请求

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

RestTemplate 其他方法

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

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

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

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

总结

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

您可能感兴趣的文章:
阅读全文