环球关注:Java中restTemplate的使用

2023-03-26 15:01:46 来源:腾讯云


(相关资料图)

原文链接

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的使用

2023-03-26

焦点关注:不见面也能签!新疆劳动合同进入“电签时代”

2023-03-26

快报:四十九日祭结局是什么

2023-03-26

环球观速讯丨奥特曼格斗进化3戴拿奇迹型大招怎么解锁_奥特曼格斗进化3戴拿奇迹型技能怎么得

2023-03-26

最新快讯!用黄瓜片敷脸有什么效果_用黄瓜片敷脸的效果有哪些

2023-03-26

三年级上册班主任教学计划 最资讯

2023-03-26

父亲节祝福语简短8字_全球快看点

2023-03-25

点睛羊城最大醒狮,广州市传统醒狮邀请赛落幕 当前滚动

2023-03-25

牛肉可以炖什么给孩子吃_牛肉可以炖什么今日更新

2023-03-25

薄荷图床 上传文件API调用指南-当前短讯

2023-03-25

搞笑一家人第二部结局

2023-03-25

动态:简约裁剪最能体现自身的魅力,时尚美丽又显青春活力十足

2023-03-25

紫荆山南街道花都社区联合郑州人民医院南部院开展义诊活动_世界热讯

2023-03-25

每日速递:NeuroRPM获FDA许可,将利用Apple Watch监测帕金森病症状

2023-03-25

环球微资讯!还贷计算器2021,还贷计算器2022年最新版

2023-03-25

衡指的是什么计量单位

2023-03-25

【世界快播报】宝丽板是什么材料_宝丽板

2023-03-25

自然淡妆化妆步骤_快来这里学习了-环球即时看

2023-03-25

中钢协执行会长何文波与力拓首席执行官举行会谈 就行业运行等进行了深入交流

2023-03-24

天天视讯!半场战报:韩国2-0哥伦比亚,孙兴慜两轰世界波

2023-03-24

环球动态:推荐几部逆后宫的动漫

2023-03-24

走胶济丨“刀削面技术”解决金属碎屑世界性难题-当前速看

2023-03-24

快资讯丨市场监管总局:算法推荐等方式发布互联网广告,应当将其算法推荐服务记入广告档案

2023-03-24

厂家直销一手货源平台有哪些

2023-03-24

泰达宏利中小盘(两融标的)-环球报道

2023-03-24

比亚迪新专利可识别静脉开启车门

2023-03-24

路桥信息3月30日北交所上会:近年来研发强度超11% 取得58项专利|全球关注

2023-03-24

电流怎么测 世界今热点

2023-03-24

世界短讯!贵州一高校6名00后用墙绘涂抹出乡村“艺术范”

2023-03-24

盐湖股份:近年来,公司钾肥产量维持在500万吨左右

2023-03-24

Copyright ©  2015-2022 欧洲频道网版权所有  备案号:沪ICP备2022005074号-23   联系邮箱: 58 55 97 3@qq.com