新动态:Java中restTemplate的使用
2023-03-25 08:18:20 来源: 腾讯云
(资料图片)
原文链接
GitHub项目地址
Gitee项目地址
本文介绍restTemplate基础用法。
Java中get和post的用法请参考:Java中Get和Post的使用
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 strObject1 = restTemplate.getForObject(getURL, String.class); //无参 JSONObject jsonObject1 = JSONObject.parseObject(strObject1); MultiValueMap sendData = new LinkedMultiValueMap<>(); sendData.add("number", "3"); sendData.add("name", "张三post"); String strObject2 = restTemplate.getForObject(getURL, String.class, sendData); // 带参 JSONObject jsonObject2 = JSONObject.parseObject(strObject2); // 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 jsonObject1:" + jsonObject1 + "\n"); System.out.println("useGet jsonObject2:" + jsonObject2 + "\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; }}
标签:
为您推荐
精彩放送
热门文章
-
天下车智|昔日SUV亚军如今名落孙山,途观销量为何大不如前? 当前通讯
-
冲刺A股两年的湖州银行,IPO梦何时能圆? 世界播报
-
原料成本上涨盈利能力下降,“化学茅”万华化学停不下扩张步伐
-
960万平方公里,哪里首先成“中国宝宝的专属奶源地”
-
连续增聘基金经理,陈金伟或将离职?宝盈基金人才不足问题凸显
-
哈尔滨银行新帅上任,面临重压
-
荣耀之后,妙可蓝多能否站稳“C位”?
-
《人民日报》:长虹推进新型工业化,实施数字化转型-每日头条
-
天下车智|起价仅17.49万元,一汽-大众ID. CROZZ家族实属超值
-
共享员工的尚品宅配在打什么算盘?
-
最资讯丨长虹·美菱开启“1年抢1回”活动 将绿色行动进行到底
-
9年来净利首次下降,宝丰能源一路高歌能否“顺势登顶”?
精彩图片
热文
-
油价又变!这回是…
-
美国非裔男子偷太阳镜后被警察枪杀 其母:儿子被枪击时手无寸铁|当前热闻
-
法国总统府:英国国王查尔斯三世访法行程推迟_热门
-
天天要闻:建设路街道计划路社区开展反诈知识宣传
-
兴业消费金融逾期一天会在信用报告显示吗?逾期后果?|观热点
-
各大银行停息挂账是什么意思?停息挂账怎么申请?
-
美国生命基因LIFE GENE:为什么说NMN是女性的“福音”?
-
病死率可达10%左右!生猪皮炎肾炎综合征如何治疗? 世界热门
-
不同“僵猪”使用不同的防治方法,分类防治效果更好!
-
全球快讯:北方猪价“一片红”,南方局地延续补跌,后市生猪价格还能涨吗?
-
生猪价格止跌上涨,但看涨情绪有限,猪价或将大稳小动? 当前关注
-
止步3连降,猪价要趁势“逆袭”?或将触及16元/公斤的高点|全球快报
-
播报:民调:美国仅有10%民众对银行系统有信心
-
裁员近2万人?这一知名公司宣布……
-
东芝或将退市?
-
外媒:美国就意大利雇佣古巴医生施压,被批“荒谬干涉意内政”_焦点短讯
-
柬埔寨批美国别人权报告是“美式双标”:为什么不提自己?-当前头条
-
顶尖性能搭配超光影三主摄,OPPO Find X6系列开售,4499元起
-
全球消息!广西各银行停息挂账案例分析如何?信用卡可以解冻吗?
-
滴水贷逾期一天会咋样?逾期会有什么影响?
-
当前视点!夏航季首都机场日均计划执行航班1137架次
-
天天热讯:猪价低迷为何龙头猪企却加速出栏?朱增勇:猪价主要靠消费支撑
-
全面跌破4000元/吨,豆粕到达近14个月低位,还得跌?
-
科技赋能营养 健康引领未来
-
世界微资讯!3月辽宁猪价落至全国之下,4月辽宁与全国生猪价差或进一步拉大
-
硅谷银行分拆出售 媒体披露多家美国银行有竞拍意向
-
国际货币基金组织敦促黎巴嫩加快改革以启动一揽子救助计划
-
【世界聚看点】美军在叙发动报复性空袭已致6人死亡
-
环球速递!叙媒:美军在叙利亚代尔祖尔省军事基地遭导弹袭击
-
美国校园又现枪案,逾千学生示威要求推动枪支改革
-
全球聚焦:“你好,香港!”华东地区推广活动在上海举办
-
环球实时:澳门健康码系统3月27日起停用
-
揭秘:义乌“摆摊”史,财富源头
-
消费贷款哪个银行利息低?逾期会有什么影响?
-
商业贷款可以提前还款吗?能逾期几次?
-
北京形成全国领先的地震烈度速报与预警台网 全球观察
-
天下车智|昔日SUV亚军如今名落孙山,途观销量为何大不如前? 当前通讯
-
齐心奋进,向善而行!“集爱八闽·光明助残”爱眼公益行项目推进交流会顺利举行 世界热门
-
“支撑数字化转型的智慧教学环境建设论坛”圆满举办!
-
安徽纺织服装第一县再发力 打造千亿级纺织服装产业集群
-
原材料价格上涨 预期后市DBP价格高位震荡盘整
-
餐饮、冻肉“托底”猪价,生猪价格进入震荡区间
-
头均亏损在200-300元/头,猪价已跌至年内低点,猪市能否再获提振?
-
《2023胡润全球富豪榜》榜公布,秦英林夫妇蝉联河南首富_全球快看
-
短讯!2月能繁母猪存栏量下降0.6%,辛国昌:近期猪价大涨的可能性较小
-
猪价低谷中徘徊,短期难破7.0元关口|环球通讯
-
世界今日讯!柬首相称不会同任何国家“结伙”遏制打压另一国家,中方回应
-
全球要闻:美方称希望重返联合国教科文组织 外交部:希望美方的初衷是承担国际责任
-
布林肯称美国应重返联合国教科文组织,外交部回应
-
环球微头条丨俄驻叙调解中心:美主导联盟公然违反预防冲突规则