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处理各种复杂的页面. 这种还是比较简单的类型.因为一个页面也就这种类型. ...
随机推荐
- ISO/IEC 9899:2011 条款6.9.2——外部对象定义
6.9.2 外部对象定义 语义 1.如果对一个对象的标识符的声明具有文件作用域以及一个初始化器,那么该声明是对该标识符的一个外部定义. 2.对于具有文件作用域且没有一个初始化器.没有一个存储类说明符, ...
- springboot 整合Elasticsearch
Elasticsearch Elasticsearch 是一个分布式.可扩展.实时的搜索与数据分析引擎. 它能从项目一开始就赋予你的数据以搜索.分析和探索的能力,可用于实现全文搜索和实时数据统计. 在 ...
- [LeetCode] 243. Shortest Word Distance 最短单词距离
Given a list of words and two words word1 and word2, return the shortest distance between these two ...
- [LeetCode] 259. 3Sum Smaller 三数之和较小值
Given an array of n integers nums and a target, find the number of index triplets i, j, k with 0 < ...
- [LeetCode] 502. IPO 上市
Suppose LeetCode will start its IPO soon. In order to sell a good price of its shares to Venture Cap ...
- 测试报告ExtentReport改进
具体步骤Step-1:在pom.xml文件中添加 Maven 依赖包 <?xml version="1.0" encoding="UTF-8"?> ...
- PHP阿里大于发短信教程
PHP阿里大于发短信教程 1 先去控制台 https://www.alidayu.com/center/user/account?spm=a3142.7791109.1999204004.5.ZtBQ ...
- 学习数据结构Day3
栈和队列 栈是一种线性结构,相比数组 他对应的操作是数组的子集 只能从一端进入,也只能从一端取出 这一端成为栈顶 栈是一种先进后出的数据结构,Last In First Out(LIFO) 程序调用的 ...
- TCP/IP学习笔记4--网络地址
"他强由他强,清风拂山岗.他横由他横,明月照大江.世间诸事,敞开心扉,顺其自然." -- 张大千 地址具有两个特性: 1:唯一性 同一个通信网络中的任意两个通信主体不能具有相同的地 ...
- 嵌入式02 STM32 实验01 端口复用和重映射
内设与外设: 端口复用和端口重映射都需要了解内设和外设,那么什么是内设?什么是外设? 内设:单片机内部集成的功能一般包括:串口模块.SPI模块(Serial Peripheral Interface ...