RestTemplate 的传参方式(Get、Put、Post)

一、RestTemplate 简介

1、RestTemplate 概述

2、RestTemplate 的配置项

  • setBufferRequestBody
    是否是否缓冲流来存储请求体,默认true
  • setProxy
    设置代理对象
  • setChunkSize
    设置每次传输字节长度,与 setBufferRequestBody(false) 结合使用
  • setConnectTimeout
    设置连接超时时间,默认 -1
  • setReadTimeout
    设置读取内容超时时间,默认 -1
  • setOutputStreaming
    设置Connection是否设置输出流程
  • setTaskExecutor
    设置异步回调执行器

3、RestTemplate 请求方式

  • GET
    通过请求URI得到资源
  • POST
    用于添加新的内容
  • PUT
    用于修改某个内容,若不存在则添加
  • DELETE
    删除某个内容
  • OPTIONS
    询问可以执行哪些方法
  • HEAD
    类似于GET, 但是不返回body信息,用于检查对象是否存在,以及得到对象的元数据
  • CONNECT
    用于代理进行传输,如使用SSL
  • TRACE
    用于远程诊断服务器

二、RestTemplate 使用

1、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;
    }
}

2、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;
   	}
   }

3、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);
    }
}

3、Delete 请求

  • delete()
    在特定的URL上对资源执行HTTP DELETE操作

4、RestTemplate 其他方法

  • exchange()
    在URL上执行特定的HTTP方法,返回包含对象的ResponseEntity,这个对象是从响应体中
    映射得到的
  • execute()
    在URL上执行特定的HTTP方法,返回一个从响应体映射得到的对象
  • headForHeaders()
    发送HTTP HEAD请求,返回包含特定资源URL的HTTP头
  • optionsForAllow()
    发送HTTP OPTIONS请求,返回对特定URL的Allow头信息
发布了40 篇原创文章 · 获赞 0 · 访问量 338

猜你喜欢

转载自blog.csdn.net/baidu_27414099/article/details/104439734