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的使用
2023-03-27 18:21:46
北京利尔(002392)3月27日主力资金净买入147.64万元
2023-03-27 17:15:44
【全球速看料】简笔画米奇_米奇简笔画
2023-03-27 15:56:29
世界短讯!文化特色才是古镇旅游的灵魂
2023-03-27 14:59:30
屡试不爽成语的意思是什么_屡试不爽的意思和造句 天天要闻
2023-03-27 12:53:17
透析中心里的年轻人详细内容
2023-03-27 11:46:31
手机上hd是什么意思怎么关OPPO手机_手机上hd是什么意思
2023-03-27 10:45:49
万得凯:3月24日获融资买入169.90万元 世界焦点
2023-03-27 09:56:35
粤媒:这支亚运队的成绩让人感到忧心,急需补强拦截型后腰
2023-03-27 08:13:30
普华永道咨询 深圳有限公司西安分公司_对于普华永道咨询 深圳有限公司西安分公司简单介绍
2023-03-27 05:51:45
天书奇谈免费完整版手游_天书奇谈免费送号
2023-03-26 23:55:03
英国挑衅,俄罗斯硬刚,普京宣布将在白俄部署战术核武器-当前时讯
2023-03-26 21:02:04
大连少年儿童图书馆 馆校_大连少年儿童图书馆_世界热资讯
2023-03-26 18:53:05
诺言背叛诺言是哪首歌的歌词_诺言背叛诺言的歌名|天天速讯
2023-03-26 16:59:52
英雄联盟手游9月龙魂商店内容介绍_每日关注
2023-03-26 14:50:48
青春斗剧情介绍
2023-03-26 14:06:46
188.4万人次!天津地铁单日客流再创新高
2023-03-26 11:58:28
观热点:国际都会高尔夫球锦标赛缩短为54洞 许龙一力争成为亚巡史第一个中国香港冠军
2023-03-26 09:49:10
lixiaoxia(中国金融稳定报告)
2023-03-26 07:02:18
ios大型手游排行榜_全球动态
2023-03-26 06:35:20
乔尔杰维奇发掘崔永熙,尤纳斯发掘孙悦,为何篮球伯乐总是外教?
2023-03-26 02:04:24
川渝领事馆共聚山城,探索双城发展新机遇_世界短讯
2023-03-25 21:57:53
广西首个海上风电示范项目全面启动
2023-03-25 19:02:09
大墨斗鱼的家常做法
2023-03-25 17:30:11
古城跑起来!武汉又一马拉松赛事开启报名
2023-03-25 16:18:41
环球热门:“老人故意推倒摩托车”案当庭宣判:老人继承人赔偿车主修车款16704元
2023-03-25 14:13:27
日本马达巨头明电舍:充分运用在华产能,若新建工厂将考虑中国
2023-03-25 11:47:36
动态焦点:惠州龙门县有哪些镇
2023-03-25 10:15:37
用“狗血”解说引流的短视频何其多
2023-03-25 09:54:41
订单备注“9958”,杭州外卖小哥果断报警!结局太意外|当前观点
2023-03-25 07:49:35