RestTemplate对象,进行get和post简单用法
如果只是针对纯Rest接口处理的话,我们可以使用restTemplate对象来操作,简单方便,可以不需要手写httpClient代码了。
我们看下基本的用法,如下:
1.getForObject
client:
@RestController
@RequestMapping("restTemp")
public class RestTemplateController {
@GetMapping("getTest1")
public void getTest1(){
String url = "http://具体iP地址/demo/demoTest?name={name}&email={email}";
Map<String,String> params = new HashMap<>();
params.put("name","yyc");
params.put("email","12306");
RestTemplate restTemplate = new RestTemplate();
String request = restTemplate.getForObject(url,String.class,params);
//String request = restTemplate.getForObject(url,String.class,"yyc","email");
System.out.println(request);
}
}
server:
@GetMapping(value = "demoTest", produces = MediaType.APPLICATION_JSON_VALUE)
public String demoTest(@RequestParam String name,@RequestParam String email){
System.out.println(name);
System.out.println(email);
return "success";
}
2.getForEntity
client:
@GetMapping("getTest2")
public void getTest2(){
String url = "http://具体iP地址:8080/demo/demoTest?name={name}&email={email}";
HttpHeaders headers = new HttpHeaders();
headers.set("phone","123456");
Map<String,Object> params = new HashMap<>();
params.put("name","yyc");
params.put("email","12306");
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(headers);
ResponseEntity<String> request = restTemplate.getForEntity(url,String.class,httpEntity,params);
System.out.println(request.getBody());
}
server:
@GetMapping(value = "demoTest1", produces = MediaType.APPLICATION_JSON_VALUE)
public String demoTest1(@RequestParam String name, @RequestParam String email, @RequestHeader String phone){
System.out.println(name);
System.out.println(email);
System.out.println(phone);
return "success";
}
postForObject3.
这里的User类是实体类,在此本人不写了,请自行创建 User Entity。
server:
@PostMapping(value = "demoTest2", consumes = MediaType.APPLICATION_JSON_VALUE,produces = MediaType.APPLICATION_JSON_VALUE)
public String demoTest2(@RequestBody User user, @RequestHeader String phone){
System.out.println(user.getName());
System.out.println(user.getEmail());
System.out.println(phone);
return "success";
}
client:
@PostMapping("postTest1")
public void postTest1() {
String url = "http://IP:8080/demo/demoTest2";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("phone", "123456");
Map<String, Object> params = new HashMap<>();
params.put("name", "yyc");
params.put("email", "12306");
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(params,headers);
ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity,String.class);
System.out.println(request.getBody());
}
当所有传递的数据类型为复杂数据类型: headers.setContentType(MediaType.MULTIPART_FORM_DATA);
并且需要接受的参数不再实体类中进行映射。
MultiValueMap来进行传递。
server:
@PostMapping(value = "demoTest3",produces = MediaType.APPLICATION_JSON_VALUE)
public String demoTest3(@RequestParam String name,String email, @RequestHeader String phone){
System.out.println(name);
System.out.println(email);
System.out.println(phone);
return "success";
}
client:
@PostMapping("postTest2")既有实体类,又有普通的参数
public void postTest2() {
String url = "http://ip:8080/demo/demoTest3";
HttpHeaders headers = new HttpHeaders();
headers.set("phone", "1234567");
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("name", "yyc");
params.add("email", "123067");
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(params, headers);
ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class);
System.out.println(request.getBody());
}
server:
@PostMapping(value = "demoTest4",produces = MediaType.APPLICATION_JSON_VALUE)
public String demoTest4(@RequestBody User user,String sex, @RequestHeader String phone){
System.out.println(user.getName());
System.out.println(user.getEmail());
System.out.println(sex);
System.out.println(phone);
return "success";
}
client:
@PostMapping("postTest3")
public void postTest3() {
String url = "http://ip:8080/demo/demoTest4?sex={sex}";
HttpHeaders headers = new HttpHeaders();
headers.set("phone", "1234567");
Map<String, Object> params = new HashMap<>();
params.put("name", "yyc");
params.put("email", "123067");
Map<String,Object> other = new HashMap<>();
other.put("sex","男");
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(params, headers);
ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class,other);
System.out.println(request.getBody());
}
RestTemplate对象,进行get和post简单用法的更多相关文章
- jquery.validate.js 表单验证简单用法
引入jquery.validate.js插件以及Jquery,在最后加上这个插件的方法名来引用.$('form').validate(); <!DOCTYPE html PUBLIC " ...
- WPF之Treeview控件简单用法
TreeView:表示显示在树结构中分层数据具有项目可展开和折叠的控件 TreeView 的内容是可以包含丰富内容的 TreeViewItem 控件,如 Button 和 Image 控件.TreeV ...
- listActivity和ExpandableListActivity的简单用法
http://www.cnblogs.com/limingblogs/archive/2011/10/09/2204866.html 今天自己简单的总结了listActivity和Expandable ...
- Knockout简单用法
Knockout简单用法 在最近做的一个项目中,页面数据全部通过js ajax调用webapi接口获取,也就是说页面的数据全部使用javascript脚本填充,这就想到了使用一个MVVM模式的js框架 ...
- JS的简单用法
JS的简单用法 参考:http://www.w3school.com.cn/js/js_switch.asp JavaScript 是网络的脚本语言 JavaScript 是可插入 HTML 页面的编 ...
- slf4j的简单用法以及与log4j的区别
之前在项目中用的日志记录器都是log4j的日志记录器,可是到了新公司发现都是slf4j,于是想着研究一下slf4j的用法. 注意:每次引入Logger的时候注意引入的jar包,因为有Logger的包太 ...
- HttpURLConnection和HttpClient的简单用法
HttpURLConnection的简单用法:先通过一个URL创建一个conn对象,然后就是可以设置get或者是post方法,接着用流来读取响应结果即可 String html = null; lon ...
- Numpy的简单用法
Numpy的简单用法 import numpy as np 一.创建ndarray对象 列表转换成ndarray: >>> a = [1,2,3,4,5] >>> ...
- Android MultiType第三方库的基本使用和案例+DiffUtil的简单用法
1.MultiType简单介绍 1.1.MultiType用于比较复杂的页面. 如下图,今日头条用到了MultiType处理各种复杂的页面. 这种还是比较简单的类型.因为一个页面也就这种类型. ...
随机推荐
- laravel composer 使用阿里云镜像
使用composer安装错误提示: 即: [Composer\Downloader\TransportException] The "https://packagist.laravel-ch ...
- [LeetCode] 750. Number Of Corner Rectangles 边角矩形的数量
Given a grid where each entry is only 0 or 1, find the number of corner rectangles. A corner rectang ...
- 下载youtube视频到本地
https://www.clipconverter.cc/ 先通过上面的网站对youtube视频的url 进行解析获得下载链接地址 获得链接地址后 可通过阿里云香港服务器去下载 , 速度比较快 在阿里 ...
- 微设计基础架构(MDI)
微设计基础架构(MDI) 了解微设计基础架构(MDI)的概念,它们如何帮助开发,以及它们与DevOps和微服务等技术的关系. 技术决策既困难又严肃,可以决定项目的成败.如何找到合适的技术栈?“微设计基 ...
- AppCrawler运用总结
一.环境 1.环境准备:安装安卓SDK + 真机 + appcrawler-2.1.3.jar 在放 appcrawler-2.1.0.jar 的文件夹下执行以下命令: 1.生成yml的demo:ja ...
- [转帖]Reactor模式
Reactor模式 https://www.cnblogs.com/crazymakercircle/p/9833847.html 看不懂代码 只看的图.. 疯狂创客圈,一个Java 高并发研习社群 ...
- [转帖]都在说DCEP,央行数字货币究竟跟你有什么关系?
都在说DCEP,央行数字货币究竟跟你有什么关系? https://kuaibao.qq.com/s/20191104A0G1D300?refer=spider 黄奇帆指出,DCEP 使得交易环节对 ...
- Redhat7.6Linux本地的yum源配置
安装好虚拟机,配置Ip地址,见博客https://www.cnblogs.com/xuzhaoyang/p/11264573.html 我是使用的Xshell在外部链接进行的操作,比较简单,见博客ht ...
- Apache Kafka Producer For Beginners
在我们上一篇Kafka教程中,我们讨论了Kafka Cluster.今天,我们将通过示例讨论Kafka Producer.此外,我们将看到KafkaProducer API和Producer API. ...
- Kafka压测— 搞垮kafka的方法(转)
分布式系统故障场景梳理方法: 场景梳理逻辑关系: 单点硬件故障→单点进程故障类型→集群影响→集群故障场景 第三方依赖故障→集群依赖关系→集群影响→集群故障场景 业务场景→集群负载/错误影响→集群故障场 ...