Java中restTemplate的使用

来源:腾讯云 时间:2023-03-24 18:01:55


(资料图片)

原文链接

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

四川石棉:700岁“夫妻树”光叶木兰争相绽放-全球即时看

(刘刚钟金亮杨磊)目前,在四川雅安石棉县栗子坪乡的深山里,有两株古树光叶木兰迎来了开花期。谢永诚摄  据介绍,在山坳里的这株光叶木兰拥

2023-03-24

闽南师范大学文学院_闽南师范大学是几本|天天新要闻

1、闽南师范大学是省内一本,省外二本。2、闽南师范大学是福建省重点建设高校,福建省一流学科建设高校,博士学位(服务国家特

2023-03-24

优先安排孕妇就餐,海底捞可以理直气壮-当前动态

评论员李长需海底捞最近频上热搜。前有海底捞不允许单点清汤锅,后有海底捞允许顾客过夜。这两天,一位女网友在微博分享她在排队等位就餐时的

2023-03-24

黄山奇石有哪些 全球关注

黄山为三山五岳中三山之一,徐霞客曾两次游黄山,赞叹说:薄海内外,无如徽之黄山。登黄山,天下无山,观止矣!后人引申为“五岳归来不看山,

2023-03-24

世界看点:孙家广院士:传统数据库厂商正逐渐失去霸主地位

科技讯3月24日消息在北京召开的阿里云瑶池数据库峰会上,中国工程院院士孙家广表示,传统数据库厂商逐渐失去了原有的霸主

2023-03-24

当前信息:3月24日人民币SHIBOR:隔夜Shibor报1.288%,下调27个点(最近十个工作日SHIBOR一览)

3月24日人民币SHIBOR:隔夜Shibor报1 288%,下调27个点(最近十个工作日SHIBOR一览);1周期限Shibor报1 703%,下调23 4个点。2周期限Shibor报2

2023-03-24

前端设计模式——外观模式

外观模式(FacadePattern):它提供了一个简单的接口,用于访问复杂的系统或子系统。通过外观模式,客户端可以通过一个简单的接口来访问复杂的

2023-03-24

中国长城03月23日获深股通增持129.67万股_天天时快讯

03月23日,中国长城获深股通增持129 67万股,最新持股量为6000 7万股,占公司A股总股本的1 86%。近五日持股量数据持股量及股价变动图注:文中持股数

2023-03-24

全球即时看!碑林区一国家级创新街区双创服务网点揭牌

碑林区一国家级创新街区双创服务网点揭牌

2023-03-24

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