Java中restTemplate的使用 头条焦点

2023-03-26 01:09:04 来源:腾讯云


(资料图片)

原文链接

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-25

腌制食品有哪些_全球动态

2023-03-25

苏州医保家庭共济的是哪里的钱?结余金额一般有多少钱? 新消息

2023-03-25

卡瑞特战坛【第三十期】:亚伯拉罕·林肯 vs 查克·诺里斯【林肯 介绍篇】 环球焦点

2023-03-25

德宏风土人情

2023-03-25

偷渡至缅甸与他人组建电诈集团,专骗中国境内居民!28人获刑-当前视讯

2023-03-25

车上的eco是什么意思

2023-03-25

用文化力量挖掘优秀影视商业价值

2023-03-25

TT:查尔莫斯对詹姆斯的评论就是放屁 他曾发消息求后者找工作 全球信息

2023-03-25

环球短讯!榕城书院

2023-03-25

今日热搜:南昌赣江新区2023年计划供应97宗地 总占地达5746.83亩

2023-03-24

2021年五一自驾游去哪旅游最合适 五一自驾游旅游最佳去处 环球速看料

2023-03-24

环球热讯:【情牵两岸】台湾音乐眷侣福州“筑窝”:下一站“幸福”

2023-03-24

毛宁的歌曲月落乌啼_毛宁的歌曲

2023-03-24

中国人民银行废止11件规章和36件规范性文件

2023-03-24

首开股份:已把您的联系方式转给相关部门,会有人与您进行沟通

2023-03-24

教育金句(教育金句)_天天最新

2023-03-24

幸福还会来敲门演员表_当前观察

2023-03-24

《声生不息宝岛季》一公:张杰拿金曲,魏如萱惊艳,那英戏腔绝

2023-03-24

永达汽车:2022年公司拥有人应占净利润14.25亿元,同比降42.5%,建议派息每股0.292元

2023-03-24

阿里云李飞飞:数据库正加速“四化”,未来只有一种云原生数据库-全球快看点

2023-03-24

自动驾驶2025年将有“图”可依 世界要闻

2023-03-24

微速讯:车桥是什么样子的_车桥是什么

2023-03-24

国联安基金管理有限公司关于旗下部分基金增加兴业银行为代销机构的公告

2023-03-24

英格兰和苏格兰是什么关系

2023-03-24

盛大三国杀注册账号_盛大三国杀桌面版_天天观焦点

2023-03-24

柳工:根据相关规定,公司将在可转债发行上市后披露2022年年报|环球即时看

2023-03-23

全球快资讯丨天津选手王长浩蝶泳再夺金

2023-03-23

柳宗元江雪的意境-柳宗元江雪

2023-03-23

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