您当前的位置: 首页 > 热点 > > 内容页

焦点报道:Java中restTemplate的使用

来源:腾讯云 2023-03-27 01:11:30


【资料图】

原文链接

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-27
2023江西公务员考试成绩查询入口已开通(萍乡) 每日快讯

2023江西公务员考试成绩查询入口已开通。报考人员可凭本人身份证号、准考证号等信息在江西人事考试网查询本人笔试成绩。点击进入>>>2023江西公

2023-03-26
当前头条:居民转职工医保多久生效?你看懂没?

支招:居民转职工医保多久生效?你看懂没?社保网小编整理如下:居民转职工医保多久生效?一、居民转职工医保多久生效1、在参保职工医保的第二

2023-03-26
苏州社保有几个档次?2023苏州社保缴费价格详细表

苏州社保有几个档次?2023苏州社保缴费价格详细表,社保网小编整理如下:2023苏州职工社保基数:1 养老保险、工伤保险、失业保险缴费基数下限

2023-03-26
嘟嘟什么意思网络用语_dd什么意思网络用语|环球信息

1、DD是一个网络流行词,即“大大”(DaDa)的意思,同大神。2、或是表达“无论是谁都最喜欢”的意思,日语中常见。3

2023-03-26
目前手机采购软件有哪些

好采猫:好采猫是中国领先的企业政府采购阳光化电商平台,产品范围涵盖了从劳保PPE、消防安全、五金工具、清洁用品、仪器仪表、生产设备及备件

2023-03-26
当前快讯:国海证券给予洋河股份买入评级,公司深度研究:逆势显韧性,决胜次高端,公司稳步向前

每经AI快讯,国海证券03月25日发布研报称,给予洋河股份(002304 SZ,最新价:163 65元)买入评级。评级理由主要包括:1)次高端是我们长期看

2023-03-26
【广东省江西武宁商会•商会动态】跨会交流 浔商融合

——广东省江西九江商会各县市区秘书长交流会成功召开明媚春光暖,向阳草木青、2023年3月4日下午15:30,广东省江西九江商会各县市区秘书长交流

2023-03-26
流行卷发女中长图片_流行卷发|天天快资讯

1、把头发左右两边扎成两条辫子,然后用卷发棒烫头发。2、用直发夹从上到下把头发拉直,然后用卷发棒在发梢处向内卷。3、用卷

2023-03-26
世界实时:石膏板隔墙多少钱一平方双面_石膏板隔墙多少钱一平方

1、石膏隔墙目前是70元一方。2、石膏隔墙用石膏薄板或空心石膏条板组成的轻质隔墙,可用来分隔室内空间,具有构造简单,便于

2023-03-26