实时

您的位置:首页>产品 >

世界热讯: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;    }}

关键词:

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

2023-03-25 01:11:48

1、中文名称:从化外文名称:conghuacity行政区类别:县级市所属地区:中国广东政府驻地:

2023-03-24 21:53:39

证券之星讯,根据3月24日市场公开信息、上市公司公告及交易所披露数据整理,乐心医疗(300562)最新董监高及相关人员股份变动情况:2023年3月2

2023-03-24 20:09:58

1、鸽子1、鸽子,在世界各地广泛饲养,和人类伴居已有上千年的历史,考古学家发现鸽子来自于公元前3000年的伊拉克。2、鸽

2023-03-24 19:05:13

企鹅不属于哺乳动物,企鹅是卵生,不哺乳,所以它不是哺乳动物,只能是鸟类。企鹅是恒温动物,恒温动物只有两种:鸟类和哺乳动物。企鹅:有“

2023-03-24 18:05:30

电解锰  需求弱势电解锰价格继续小幅下跌  本周,电解锰国内市场行情继续弱势运行。目前,国内主要报价15000-15200元 吨。国内出口报价220

2023-03-24 17:22:50

1、端午节去肯定比较贵了,其实我觉得作为学生,反正是双休。2、你们端午去,不如抽个周末去如果你们要端午去的话,网上介绍

2023-03-24 16:04:38

近日,在海口海关所属八所海关的监管下,东方祥麟菜果基地有限公司的85箱“储良”龙眼,从大田镇祥麟公司水果种植分基地出口到北美市场。据悉

2023-03-24 14:48:50

事闹大了,美政府欲禁止航班,中国首当其冲,西方36国领空被关闭,航班,中国,美国,领空,飞越,俄罗斯,美政府

2023-03-24 13:21:32

每经AI快讯,金丹科技(SZ300829,最新价:23 74元)3月24日午间发布公告称,关于向不特定对象发行可转换公

2023-03-24 12:04:28

1、拉什科·科涅维奇。2、黑山财政部长。本文到此分享完毕,希望对大家有所帮助。

2023-03-24 10:47:37

1、《独坐敬亭山》是唐代伟大诗人李白创作的一首五绝,是诗人表现自己精神世界的佳作。2、此诗表面是写独游敬亭山的情趣,而其深含之意则是诗

2023-03-24 10:32:37

一、广西壮族自治区梧州市天气预报1、蒙山县气象台2023年3月24日4时53分继续发布雷电黄色预警信号。2、目前雷雨云团

2023-03-24 09:46:44

赤子城科技(09911)发布截至2022年12月31日止年度业绩,该集团取得客户合约收入人民币28亿元(单位下同),同比增加18 64%;公司拥有人应占利润1

2023-03-24 08:45:01

詹姆斯本人回应复出传言!晒悠闲吹口哨一幕黑贝吐槽老詹没防守,湖人,科比,乔丹,库里,黑贝,勒布朗詹姆斯,帕特里克·贝弗利,詹姆斯(塞文子爵)

2023-03-24 06:12:36

欢迎观看本篇文章,小勉来为大家解答以上问题。薛宝钗的性格有什么特点,薛宝钗的典型性格特点是什么呢很多人还不知道,现在让我

2023-03-24 01:59:16

本周OPPO举行了全新影像旗舰FindX6系列的新品发布会,这款产品一发布就获得了一致好评,尤其是FindX6Pro其配备的超光影三主摄引领移动影像进入

2023-03-23 22:10:07

1、中国最大的湖:青海湖(面积:4583平方千米)。藏语名为“措温布”(意为“青色的海”)。位于青藏高原东北部、青海省境内,中国最大的内陆湖

2023-03-23 21:32:21

山东海化(000822)(000822):2022年营业收入97 12亿元,与上期同比增加44 7%3月23日,山东海化2022年年报显示,本期营业收

2023-03-23 20:32:42

《星岛申诉王》昨日(22日)独家报导,直击长沙湾一间诊所外出现疑似炒药党,怀疑有人非法买卖一款需经医生处方的减肥药物Panbesy。

2023-03-23 18:54:41