SpringBoot RestTemplate 簡(jiǎn)單包裝解析
RestTemplate設(shè)計(jì)是為了Spring更好的請(qǐng)求并解析Restful風(fēng)格的接口返回值而設(shè)計(jì)的,通過(guò)這個(gè)類可以在請(qǐng)求接口時(shí)直接解析對(duì)應(yīng)的類。
在SpringBoot中對(duì)這個(gè)類進(jìn)行簡(jiǎn)單的包裝,變成一個(gè)工具類來(lái)使用,這里用到的是getForEntity和postForEntity方法,具體包裝的代碼內(nèi)容
如下:
package cn.eangaie.demo.util; import com.alibaba.fastjson.JSONObject; import org.springframework.http.*; import org.springframework.stereotype.Component; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import java.util.Map; /** * @author Eangaie * @date 2018/10/12 0012 下午 14:53 * 網(wǎng)絡(luò)請(qǐng)求,RestTemplate工具類 */ @Component public class RestTemplateUtil { private RestTemplate restTemplate; /** * 發(fā)送GET請(qǐng)求 * @param url * @param param * @return */ public String GetData(String url, Map<String,String> param){ restTemplate=new RestTemplate(); // 請(qǐng)勿輕易改變此提交方式,大部分的情況下,提交方式都是表單提交 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); return restTemplate.getForEntity(url,String.class,param).getBody(); } /** * 發(fā)送POST-JSON請(qǐng)求 * @param url * @param param * @return */ public String PostJsonData(String url,JSONObject param){ restTemplate=new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON_UTF8); headers.add("Accept", MediaType.APPLICATION_JSON.toString()); HttpEntity<JSONObject> requestEntity = new HttpEntity<JSONObject>(param, headers); return restTemplate.postForEntity(url,param,String.class).getBody(); } /** * 發(fā)送POST 表單請(qǐng)求 * @param url * @param param * @return */ public String PostFormData(String url,MultiValueMap<String,String> param){ restTemplate=new RestTemplate(); // 請(qǐng)勿輕易改變此提交方式,大部分的情況下,提交方式都是表單提交 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); return restTemplate.postForEntity(url,param,String.class).getBody(); } }
在控制類里面調(diào)用函數(shù),看看效果
@GetMapping("selectUser") public Result selectUser(int id){ user=userService.selectById(id); return ResultUtil.success(user,"查詢成功"); } @GetMapping("testGetData") public String testGetData(){ String url="http://localhost:81/sample/GetData?msg={msg}&author={author}"; Map<String,String> param=new HashMap<>(); param.put("msg","Hello"); param.put("author","彥杰"); return restTemplateUtil.GetData(url,param); } @GetMapping("testPostJsonData") public String testPostJsonData(){ String url="http://localhost:81/sample/PostData"; JSONObject jsonObject=new JSONObject(); jsonObject.put("msg","hello"); jsonObject.put("author","彥杰"); return restTemplateUtil.PostJsonData(url,jsonObject); } @GetMapping("testPostFormData") public String testPostFormData(){ String url="http://localhost:81/sample/PostFormData"; MultiValueMap<String,String> param=new LinkedMultiValueMap<>(); param.add("msg","Hello"); param.add("author","彥杰"); return restTemplateUtil.PostFormData(url,param); } @GetMapping("GetData") public String getData(String msg, String author){ return msg+" "+author; } @PostMapping("PostData") public String postData(@RequestBody JSONObject jsonObject){ String msg=jsonObject.getString("msg"); String author=jsonObject.getString("author"); return msg+" "+author; } @PostMapping("PostFormData") public String PostFormData(String msg,String author){ return msg+" "+author; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
通過(guò)Java實(shí)現(xiàn)獲取表的自增主鍵值
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)Java實(shí)現(xiàn)獲取表的自增主鍵值,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的可以了解一下2023-06-06Spring事務(wù)aftercommit原理及實(shí)踐
這篇文章主要為大家介紹了Spring事務(wù)aftercommit原理及實(shí)踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09Idea運(yùn)行單個(gè)main方法,不編譯整個(gè)工程的問(wèn)題
這篇文章主要介紹了Idea運(yùn)行單個(gè)main方法,不編譯整個(gè)工程的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04java的url方式、本地方式獲取json文件內(nèi)容
這篇文章給大家分享了java的url方式、本地方式獲取json文件內(nèi)容的實(shí)例代碼,有需要的朋友參考學(xué)習(xí)下。2018-07-07Java JSON轉(zhuǎn)成List結(jié)構(gòu)數(shù)據(jù)
這篇文章主要介紹了Java JSON轉(zhuǎn)成List結(jié)構(gòu)數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Java中的java.lang.reflect.Type簡(jiǎn)介
在 Java 中,java.lang.reflect.Type 是一個(gè)接口,代表所有類型的通用超類型,它包括原始類型、參數(shù)化類型、數(shù)組類型、類型變量和基本類型,本文給大家講解Java中的java.lang.reflect.Type是什么,需要的朋友可以參考下2024-06-06Spring AOP使用@Aspect注解 面向切面實(shí)現(xiàn)日志橫切的操作
這篇文章主要介紹了Spring AOP使用@Aspect注解 面向切面實(shí)現(xiàn)日志橫切的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06