Java中restTemplate的使用


(资料图片仅供参考)

原文链接

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

关键词:

Java中restTemplate的使用

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

腾讯云 2023-03-27

世界要闻:网贷申请延期还款需要什么资料?一个人可以申请网贷延期几次?

网贷申请延期还款需要什么资料?申请延期还款需要贷款人准备个人身份

时刻网 2023-03-27

世界快消息!北京口腔种植类医疗服务价格大幅降低 种植体及牙冠价格平均降低55%

近日,北京市医疗保障局会同市卫生健康委、市人力社保局出台《关于开展全市口腔种植医疗服务收费和耗材价格专项治理工作的通知》

光明网 2023-03-27

樊京生

1、樊京生,1965年10月生,毕业于华北电力大学。2、先后就职于北京电力设备总厂、北京科锐科技公司、北京合纵科技发

互联网 2023-03-27

幸福人寿4.66亿股股份“无人问津” 打八折二次拍卖遭流拍

中国网财经3月27日讯(记者郭伟莹)近日,北京产权交易所显示,幸福人寿保险股份有限公司(以下简称“幸福人寿”)三笔股权,共计约4 66亿股股权第

中国网财经 2023-03-27

环球聚焦:话剧《氢弹之父──于敏》精彩上演

原标题:宁河区文艺爱好者创作编排演出(引题) 话剧《氢弹之父──于敏》精彩上演(主题)天津日报讯(记者张帆刘雅丽)昨天,由市委市级机

天津日报 2023-03-27

【快播报】合富中国2022年营收净利双增长,2023年盈利目标一个亿

3月21日晚间,合富中国(603122 SH)披露年报,公司2022年实现营业总收入12 8亿元,同比增长7 44%;实现归母净利润8272万元,同比增长3 1

银柿财经 2023-03-27

Java中restTemplate的使用

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

腾讯云 2023-03-27

世界要闻:网贷申请延期还款需要什么资料?一个人可以申请网贷延期几次?

网贷申请延期还款需要什么资料?申请延期还款需要贷款人准备个人身份

时刻网 2023-03-27

世界快消息!北京口腔种植类医疗服务价格大幅降低 种植体及牙冠价格平均降低55%

近日,北京市医疗保障局会同市卫生健康委、市人力社保局出台《关于开展全市口腔种植医疗服务收费和耗材价格专项治理工作的通知》

光明网 2023-03-27

樊京生

1、樊京生,1965年10月生,毕业于华北电力大学。2、先后就职于北京电力设备总厂、北京科锐科技公司、北京合纵科技发

互联网 2023-03-27

幸福人寿4.66亿股股份“无人问津” 打八折二次拍卖遭流拍

中国网财经3月27日讯(记者郭伟莹)近日,北京产权交易所显示,幸福人寿保险股份有限公司(以下简称“幸福人寿”)三笔股权,共计约4 66亿股股权第

中国网财经 2023-03-27

环球聚焦:话剧《氢弹之父──于敏》精彩上演

原标题:宁河区文艺爱好者创作编排演出(引题) 话剧《氢弹之父──于敏》精彩上演(主题)天津日报讯(记者张帆刘雅丽)昨天,由市委市级机

天津日报 2023-03-27

【快播报】合富中国2022年营收净利双增长,2023年盈利目标一个亿

3月21日晚间,合富中国(603122 SH)披露年报,公司2022年实现营业总收入12 8亿元,同比增长7 44%;实现归母净利润8272万元,同比增长3 1

银柿财经 2023-03-27
x 广告
x 广告
x 广告

Copyright   2015-2023 华夏仓储网版权所有  备案号:琼ICP备2022009675号-37   联系邮箱:435 227 67@qq.com