【资料图】
原文链接
GitHub项目地址
Gitee项目地址
本文介绍restTemplate基础用法。
Java中get和post的用法请参考:
https://mp.weixin.qq.com/s/mC0D1nuCqIori5bWtLorWQ
1 提供get/post接口
1.1 Controller
@RestController@RequestMapping("/homepage")public class MyController { @Autowired MyService myService; // 提供get接口 @GetMapping("/provideGet") public Map provideGet(){ return myService.provideGet(); } // 提供post接口 @PostMapping("/providePost") public Map providePost(@RequestParam("number") int number, @RequestParam("name") String name) { return myService.providePost(number, name); } // 提供map参数的post接口 @PostMapping("/providePostByMap") public Map providePostByMap(@RequestParam Map map) { return myService.providePostByMap(map); } // 调用get接口 @GetMapping("/useGet") public Map useGet() { return myService.useGet(); }}
1.2 Service
@Service@EnableSchedulingpublic class MyService { public Map provideGet() { Map res = new HashMap<>(); res.put("number", "3"); res.put("name", "张三get"); System.out.println("provideGet res:" + res + "\n"); return res; } public Map providePost(int number, String name) { Map res = new HashMap<>(); res.put("number", number); res.put("name", name); return res; } public Map providePostByMap(Map map) { int number = map.get("number") == null ? 0 : Integer.parseInt((String) map.get("number")); String name = map.get("name") == null ? "" : (String) map.get("name"); Map res = new HashMap<>(); res.put("number", number); res.put("name", name); System.out.println("providePostByMap res:" + res + "\n"); return res; }}
2 调用get/post接口
使用restTemplate调用get/post接口。
getForObject()
:返回值是HTTP
协议的响应体getForEntity()
:返回的是ResponseEntity
,ResponseEntity
是对HTTP
响应的封装,除了包含响应体,还包含HTTP
状态码、contentType、contentLength、Header
等信息2.1 Controller
@RestController@RequestMapping("/homepage")public class MyController { @Autowired MyService myService; // 调用get接口 @GetMapping("/useGet") public Map useGet() { return myService.useGet(); } // 调用get接口验证账号密码 @GetMapping("/useGetByPsw") public Map useGetByPsw() { return myService.useGetByPsw(); } // 调用post接口 @PostMapping("/usePost") public Map usePost() { return myService.usePost(); }}
2.2 Service
@Service@EnableSchedulingpublic class MyService { @Resource private RestTemplate restTemplate; String getURL = "http://localhost:8081/homepage/provideGet"; String postURL = "http://localhost:8081/homepage/providePostByMap"; public Map useGet() { // getForObject返回值是HTTP协议的响应体 String strObject = restTemplate.getForObject(getURL, String.class); JSONObject jsonObject = JSONObject.parseObject(strObject); // getForEntity返回的是ResponseEntity,是对HTTP响应的封装 ResponseEntity responseData = restTemplate.getForEntity(getURL, ResponseResult.class); Map returnData = new HashMap<>(); returnData.put("StatusCode:", responseData.getStatusCode()); returnData.put("Body:", responseData.getBody()); System.out.println("useGet jsonObject:" + jsonObject + "\n"); System.out.println("useGet responseData:" + responseData + "\n"); System.out.println("useGet returnData:" + returnData + "\n"); return returnData; } public Map useGetByPsw() { RestTemplateBuilder builder = new RestTemplateBuilder(); RestTemplate restTemplate = builder.basicAuthentication("username", "password").build(); // getForEntity返回的是ResponseEntity,是对HTTP响应的封装 ResponseEntity responseData = restTemplate.getForEntity(getURL, ResponseResult.class); Map returnData = new HashMap<>(); returnData.put("StatusCode:", responseData.getStatusCode()); returnData.put("Body:", responseData.getBody()); System.out.println("useGetByPsw returnData:" + responseData + "\n"); System.out.println("useGetByPsw returnData:" + returnData + "\n"); return returnData; } public Map usePost() { //RestTemplate在postForObject时,用MultiValueMap,不可使用HashMap。 MultiValueMap sendData = new LinkedMultiValueMap<>(); sendData.add("number", "3"); sendData.add("name", "张三post"); // getForObject返回值是HTTP协议的响应体 String strObject = restTemplate.postForObject(postURL, sendData, String.class); JSONObject jsonObject = JSONObject.parseObject(strObject); // getForEntity返回的是ResponseEntity,是对HTTP响应的封装 ResponseEntity responseData = restTemplate.postForEntity(postURL, sendData, ResponseResult.class); Map returnData = new HashMap<>(); returnData.put("StatusCode:", responseData.getStatusCode()); returnData.put("Body:", responseData.getBody()); System.out.println("usePost jsonObject:" + jsonObject + "\n"); System.out.println("usePost responseData:" + responseData + "\n"); System.out.println("usePost returnData:" + returnData + "\n"); return returnData; }}
X 关闭
- 1、Java中restTemplate的使用|天天快播
- 2、2023年3月22日山东枣庄华润纸业废纸收购价格调整|环球聚看点
- 3、环球报道:市场信心危机不断发酵 欧美银行业系统性风险短期难消
- 4、资管巨头Pimco和景顺因瑞信AT1债券被减记面临巨额损失
- 5、留队!拒回皇马!签新合同,阿森纳4顶薪诞生,老佛爷后悔
- 6、一份“豪横”的分红方案!每10股派发现金股利32.5元|全球今热点
- 7、曾经也是国足硬汉的吴曦,怎么就变成了软蛋,遭球迷唾骂?
- 8、三七商品报价动态(2023-03-21) 全球微头条
- 9、机油两滤是什么
- 10、视点!安信证券给予中天科技买入评级,终止海缆分拆上市,公司新增超21亿元海缆业务订单
-
安息吧青春 每日头条
1、《安息吧青春》是马泽平创作的网络小说。2、发表于起点网。本文到此分享完毕,希望对大家有所帮助。
-
当前热讯:新车品鉴:长安福特探险者下线 2.3T+10AT/6月上市
汽车现在已经越来越普及,基本上都快实现每家每户都有汽车了,那么汽车这么多的情况之下,我们在用车的过程当中肯定也就会遇到各
-
财报速递:药明康德2022年全年净利润88.14亿元,总体财务状况良好
3月21日,A股上市公司药明康德发布2022年全年业绩报告。根据同花顺财务诊断大模型对其本期及过去5年财务数据1200余项财务指标的综合运算及跟踪
-
小班戏剧表演案例分析_幼儿园小班案例分析
1、背景秋天是果实收获的季节,到处充满欢乐,充满教育机会。水果的颜色、形状、味道符合小班儿童的认知特点,贴近他们的生活。于是《苹果穿衣
-
海吉亚医疗(06078)发布年度业绩,净利润4.82亿元,同比增加6.3%;拟派末期息每股0.15元
海吉亚医疗(06078)发布年度业绩,净利润4 82亿元,同比增加6 3%;拟派末期息每股0 15元,肿瘤科,海吉亚医疗,公司营业收入
-
世界消息!郭刚堂透露婚礼筹备情况,摆60桌感谢好心人帮助,田静处境尴尬
寻找孩子的路上会有太多的悲伤和委屈,但现在一切都已告一段落,我们都为郭夫妇感到高兴。我会从心底里为郭高兴,但我也会为我的宝贝不知道住
-
世界时讯:曹刿论战一词多义整理_曹刿论战一词多义
1、一词多义:1故:公问其故:原因2从:民弗从:服从,顺从故逐之:
-
日本模特夫妇离婚后变姐妹?生子4年,男方突然出柜变“美女”
结婚5年多,儿子都4岁了,丈夫突然说想出柜做女人,于是闪电离婚,开始了以女性形象示人的生活 摆在日本模特Peco面前的,就是这样一幅局面。
-
全球热点!新国都3月20日盘中跌幅达5%
以下是新国都在北京时间3月20日11:28分盘口异动快照:3月20日,新国都盘中跌幅达5%,截至11点28分,报18 13元,成交4 87亿元,换手率7 01%。注
-
受降雨影响 秘鲁69个市进入紧急状态-即时看
受近期降雨天气影响,秘鲁政府于当地时间3月19日宣布,包括首都利马在内的69个市进入为期60天的紧急状态,以采取紧急、必