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处理各种复杂的页面. 这种还是比较简单的类型.因为一个页面也就这种类型. ...
随机推荐
- Redis 主从、哨兵Sentinel、Jedis
Redis 主从.哨兵Sentinel.Jedis 2017年02月15日 15:52:48 有且仅有 阅读数 6183 文章标签: redis主从sentineljedis 更多 分类专栏: 7/1 ...
- Thread 设置 IsBackground true false 的 运行差别
1.这是一个 后台线程,IsBackground=true, 主线程完成后,后台子线程也停止了,即使 子线程 还有没运行完,也要停止 class Program { static void Main ...
- [06]Go设计模式:适配器模式(Adapter Pattern)
目录 适配器模式 一.简介 二.代码 三.参考资料 适配器模式 一.简介 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型模式,它结合了两个独 ...
- Qt5 QtQuick系列----QtQuick的Secne Graph剖析(3)-- qml与OpenGl结合
我读的书愈多,就愈亲近世界,愈明了生活的意义,愈觉得生活的重要. -- 高尔基 需要先看:https://blog.csdn.net/qq_35865125/article/details/86485 ...
- Integer的parseInt和valueOf的区别
先来看一下下面这段代码 String s = "1"; System.out.println(Integer.valueOf(s)); System.out.println(Int ...
- Django中的admin
1.基本知识 在用Django框架写了一个网站之后,我们添加数据大概有两种方式: 1.在连接的数据库中添加数据 2.登录admin,进入后台添加数据 创建一个Django项目后,我们在url.py中会 ...
- day44——索引、explain、慢查询、数据备份、锁、事务
day44 索引介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还有一些复杂的查询操作 ...
- Django视图扩展类
Django视图扩展类 扩展类必须配合GenericAPIView使用扩展类内部的方法,在调用序列化器时,都是使用get_serializer 需要自定义get.post等请求方法,内部实现调用扩展类 ...
- shell中通过eval执行一个字符串命令
#!/bin/bash echo "Switch Directory : /home/pktgen-2.9.0" dir="/home/pktgen-2.9.0" ...
- mvn: command not found in Jenkins slave
在Jenkins上添加了一个slave node, 并绑定了一个团队项目,通过shell来执行后续操作,结果卡在了 mvn: command not found 其实这个node上是配置了maven的 ...