当前位置:首页>滚动 > >正文

Java中restTemplate的使用

  • 2023-03-27 10:17:52来源:腾讯云


【资料图】

原文链接

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():返回的是ResponseEntityResponseEntity是对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;    }}

标签:

延伸阅读

推荐阅读

从秀场到生活场,小红书携手上海时装周时尚周末,引领时尚潮流新趋势

【携手上海时装周时尚周末,引领时尚潮流新趋势】上海时装周的影响力正在不断扩大,并成为上海这座城市和中国时尚产业链接全球的名片和代表

“康健说”公益讲座走进校园 普及心理健康知识

“康健说”公益讲座走进校园普及心理健康知识2023年09月09日14:50中国网财经

中到大雨,个别地点有暴雨!还要警惕强对流!

点击标题下「河北新闻广播」可快速关注昨晚开始,我省迎来新一场降雨。

桂林这个以辣椒命名的小山村太美了

六漫村在大多数市民看来词语“六漫”和“辣椒”毫不相关但是在龙胜各族

教师节前夕 这位老师捐髓救学生

教师节前夕这位老师捐髓救学生

王建涛:逆袭的工人院士|圳青年

02:21如果用一个词来形容王建涛的经历,那就是“逆袭”。王建涛生于197

不再是大号手环?小米新手表曝光

近期,网友爆料小米即将发布的全新智能手表,可能命名为小米Watch2Pro

股票行情快报:昊华科技(600378)9月8日主力资金净卖出650.83万元

截至2023年9月8日收盘,昊华科技(600378)报收于34 02元,下跌0 53%,换

火箭瞄准勇士旧将,格林离队进入倒计时!斯通寻找新中锋取得进展

他为火箭队搭建的阵容似乎有些过于年轻化,在今年的休赛期,他们先后和

这些汽车被曝“大量收集数据”!其中最严重的是

来源:参考消息网参考消息网9月8日报道据法新社9月6日报道,一项研究6

外交部回应美方调查华为手机芯片

9月8日,外交部发言人毛宁就美国对华为手机芯片展开调查一事回答媒体问

深圳一商贩激流中淡定卖炒饭 太不容易了!

【深圳一商贩激流中淡定卖炒饭】7日晚,受暴雨侵袭,深圳多个路段出现

就在刚刚!局势突变,国际传来六个消息

就在刚刚!局势突变,国际传来六个消息,巴西,海盗,索马里,大堡礁,珊瑚

智慧社区场景化创新助力城市美好生活“零距离”

自2014年5月住房和城乡建设部印发《智慧社区建设指南(试行)》开始,中

男人怎样通过吃来补肾,大虾、韭菜等阳性食物?

男人怎样通过吃来补肾,大虾、韭菜等阳性食物?1、第一:如果是肾阳虚

幸福蓝海9月8日快速回调

以下是幸福蓝海在北京时间9月8日13:55分盘口异动快照:9月8日,幸福蓝

沙钞!足球报:斯坦丘税后年薪200万欧+奖金条款,高于在中超收入

沙钞!足球报:斯坦丘税后年薪200万欧+奖金条款,高于在中超收入,国民,

英伦星光(关于英伦星光简述)

,你们好,今天0471房产来聊聊一篇伦星光,伦星光简述的文章,网友们对

2023年全国中小学消防安全公开课直播回放入口汇总

2023秋季全国中小学消防安全公开课9月8日15时,2023年秋季全国中小学消

安徽池州通报3起建筑施工事故,共造成3人死亡

安徽池州市应急管理局9月7日通报3起建筑施工领域事故,3起事故前后在近

responseentity下载文件(下载的Res.rdb文件可以修改么)

1、好像有的可以改。2、有的不可以;要根据文件而定;也就是说有的文件

走进沉浸式文旅新场景:拓展体验空间,挖掘消费潜力

走进沉浸式文旅新场景:拓展体验空间,挖掘消费潜力-

滁州市人民代表大会常务委员会任免人员名单

滁州市人民代表大会常务委员会任命人员名单(2023年8月30日滁州市第七

朗科科技:截至8月18日 公司股东人数约1.89万

朗科科技8月31日在投资者互动平台表示,公司看好存储行业前景,积极围

下一页下一页下一集(下一页下一页)

导读1、能吸引人的才会有下一页。本文到此讲解完毕了,希望对大家有帮

龙洞堡国际机场综合性指定监管场地通过现场验收 | 暑运黔游“热”

8月30日,贵州首个综合性指定监管场地—贵阳龙洞堡国际机场综合指定监

从张之臻到中国军团,突破永不停歇

体坛加,体坛+,艾迪,美网,张之臻,吴易昺,王欣瑜,朱琳,从张之臻到中国军

草原上的“丰收那达慕”!2023年《中国农民丰收节晚会》落地伊金霍洛旗

“庆丰收、促和美”,第六个“中国农民丰收节”将在9月23日农历秋分如

驾驶证如何期满换证?

驾驶证期满换证方式如下:根据《机动车驾驶证申领和使用规定》162号令

突发!足协做出英明决定,申花大连人成大赢家,吴金贵谢晖安心了

对此,《足球报》这样写道:“根据时间点来看,足协杯半决赛与亚运会男

猜您喜欢

Copyright ©  2015-2022 大河服装网版权所有  备案号:京ICP备2022022245号-75   联系邮箱:435 226 40@qq.com