Java中restTemplate的使用

来源:腾讯云 时间:2023-03-24 06:18:12


【资料图】

原文链接

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;    }}

上一篇:

下一篇:

X 关闭

Java中restTemplate的使用

原文链接GitHub项目地址Gitee项目地址本文介绍restTemplate基础用法

2023-03-24

每日速看!卵巢囊肿是什么样的图片_卵巢囊肿是什么

1、卵巢囊肿是指卵巢上的细胞发生病变,进而在卵巢上形成肿瘤。2、卵巢囊肿可分为生理性和病理性两种。3、生理性卵巢囊肿常见

2023-03-24

天空体育:孔蒂目前还没回到热刺,训练由斯特里尼和梅森负责|世界微速讯

据天空体育消息,孔蒂目前还没有回到热刺,梅森和斯特里尼正在负责热刺训练的事宜,他们也将率队和伊普斯维奇进行一场友谊赛。在3-3战平南安普

2023-03-23

球星卡卡曾代表哪个国家队出征世界杯 巴西球星卡卡参加过几届世界杯-全球即时

导读:球星卡卡有两重国籍,分别是巴西和意大利,不过出使世界杯都是以巴西国家队的名义出征的,以下是小编对卡卡在国家队获得过的荣誉介绍,

2023-03-23

3月23日中邮核心优选混合净值上涨1.55%

3月23日,截至收盘,中邮核心优选混合(590001)较前一交易日净值上涨1 55%,跑赢上证指数,单位净值为1 28,累计净值为2 4951。中邮核心优选

2023-03-23

被爆抢的朱辛庄地块 “摇号”进京的上海大华-世界短讯

3月23日,北京迎来供地政策优化后的首场土拍,昌平朱辛庄0028地块贡献了最多的话题线上竞价即触及上限、42家房企参与摇号大战、中签率仅2 38%

2023-03-23

萨巴厨房:懒人下面条(关于萨巴厨房:懒人下面条的简介)_环球播报

大家好,萨巴厨房:懒人下面条,关于萨巴厨房:懒人下面条的简介很多人还不知道,现在让我们一起来看看吧!1、《萨巴厨房:懒人下面条

2023-03-23

大快人心!抛妻弃子却成了植物人,娱乐圈的“现世报”,终于来了 焦点播报

大快人心!抛妻弃子却成了植物人,娱乐圈的“现世报”,终于来了,姚笛,程愫,小三,马蓉,王宝强,娱乐圈,傅程鹏,百亿家产

2023-03-23

硅业分会:本周硅片价格持稳运行

36氪获悉,据中国有色金属工业协会硅业分会23日数据显示,本周硅片价格持稳运行。M10单晶硅片(182mm 150μm)价格区间在6 22-6 5元 片,成

2023-03-23

博鳌零碳示范区开始“试验”

鸟瞰博鳌零碳示范区内的博鳌亚洲论坛国际会议中心和博鳌亚洲论坛新闻中心等建筑(3月15日摄,无人机照片)。新华社记者杨冠宇摄新华社海口3月22

2023-03-23

Copyright   2015-2022 人人科技网版权所有  备案号: 粤ICP备18023326号-36   联系邮箱:8557298@qq.com