亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Springboot集成restTemplate過程詳解

瀏覽:44日期:2023-05-22 10:38:42

一restTemplate簡介

restTemplate底層是基于HttpURLConnection實現的restful風格的接口調用,類似于webservice,rpc遠程調用,但其工作模式更加輕量級,方便于rest請求之間的調用,完成數據之間的交互,在springCloud之中也有一席之地。大致調用過程如下圖

Springboot集成restTemplate過程詳解

二restTemplate常用方法列表

forObeject跟forEntity有什么區(qū)別呢?主要的區(qū)別是forEntity的功能更加強大一些,其返回值是一個ResponseEntity,更加方便我們獲得響應的body,head等信息。exchange方法和其他方法不同之處就是能自己定義的rest請求方式。

2.1 get請求方法預覽

Springboot集成restTemplate過程詳解

2.2 post方法請求預覽

Springboot集成restTemplate過程詳解

2.3put請求方法預覽

Springboot集成restTemplate過程詳解

2.4 delete請求方法預覽

Springboot集成restTemplate過程詳解

2.5exchange方法預覽

Springboot集成restTemplate過程詳解

三rest接口調用示例

restTemplate配置

首先本次示例采用的是springboot2.x以上版本,javaSE8;其次發(fā)布的服務端是同一臺機子,服務端端口8090,客戶端端口8080;類路徑youku1327;在實際工作中最常用是get,post請求方式;restTemplate簡單配置如下:

/** * @Author lsc * @Description <p> </p> * @Date 2019/10/14 11:40 * @Version 1.0 */@Configurationpublic class RestTemplateConfig { // 配置 RestTemplate @Bean public RestTemplate restTemplate(ClientHttpRequestFactory factory){ return new RestTemplate(factory); } @Bean public ClientHttpRequestFactory simpleClientHttpRequestFactory(){ // 創(chuàng)建一個 httpCilent 簡單工廠 SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); // 設置連接超時 factory.setConnectTimeout(15000); // 設置讀取超時 factory.setReadTimeout(5000); return factory; }}

3.1 get請求接口調用示例

服務費發(fā)布的端口

@GetMapping('user') public String getUser(){ return 'youku1327'; } @GetMapping('user/{name}') public String getUserName(@PathVariable String name){ return name; }

客戶端調用

GET參數說明:

第一個參數是url。 第二個參數是返回值類型。 第三個參數是uri地址路徑變量。

/* * @Author lsc * @Description <p> 獲得無參的get請求 </p> * @Date 2019/10/17 21:15 * @Param [] * @return void **/ @Test public void testGETNoParams(){ String result = restTemplate.getForObject('http://localhost:8090/youku1327/user', String.class); System.out.println(result); } /* * @Author lsc * @Description <p> URL帶參 </p> * @Date 2019/10/18 13:49 * @Param [] * @return void **/ @Test public void testGETParams(){ // http://localhost:8090/youku1327/user/{1} String result = restTemplate.getForObject('http://localhost:8090/youku1327/user/{name}', String.class,'lsc'); System.out.println(result); }

3.2 post請求示例

POST請求參數說明

第一個參數是url。第二個參數是請求參數。第三個參數是返回值類型。第三個參數是uri地址路徑變量。

服務端發(fā)布接口

@PostMapping('provider') public ResponseEntity<String> addData(@RequestBody JSONObject jsonObject){ String user = (String) jsonObject.get('user'); return ResponseEntity.ok(user); }

客戶端接口調用

/* * @Author lsc * @Description <p> post</p> * @Date 2019/10/18 23:23 * @Param [] * @return void **/ @Test public void testPostMethod() throws MalformedURLException { JSONObject jsonObject = new JSONObject(); jsonObject.put('user','youku1327'); HttpHeaders httpHeaders = new HttpHeaders(); // 設置請求類型 httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8); // 封裝參數和頭信息 HttpEntity<JSONObject> httpEntity = new HttpEntity(jsonObject,httpHeaders); String url = 'http://localhost:8090/youku1327/provider'; ResponseEntity<String> mapResponseEntity = restTemplate.postForEntity(url, httpEntity, String.class); System.out.println(mapResponseEntity.getBody()); }

3.3 put接口調用示例

PUT請求參數說明

第一個參數是url。第二個參數是請求參數。第三個參數是uri地址路徑變量。

服務端發(fā)布接口

@PutMapping('provider/{id}') public ResponseEntity<JSONObject> updateData(@PathVariable Long id, @RequestBody JSONObject jsonObject){ Object object = jsonObject.get('user'); jsonObject.put('id',id); // {'id':1327,'user':'youku1327'} System.out.println(jsonObject); return ResponseEntity.ok(jsonObject); }

客戶端接口調用

/* * @Author lsc * @Description <p> put</p> * @Date 2019/10/18 23:23 * @Param * @return **/ @Test public void testPutMethod() throws MalformedURLException { JSONObject jsonObject = new JSONObject(); jsonObject.put('user','youku1327'); HttpHeaders httpHeaders = new HttpHeaders(); // 設置請求類型 httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8); // 封裝參數和頭信息 HttpEntity<JSONObject> httpEntity = new HttpEntity(jsonObject,httpHeaders); String url = 'http://localhost:8090/youku1327/provider/{id}'; restTemplate.put(url, httpEntity, 1327); }

3.4delete請求示例

DELETE請求參數說明

第一個參數是url第二個參數uri地址路徑變量。

服務端發(fā)布接口

@DeleteMapping('provider/{id}') public ResponseEntity<String> delData(@PathVariable Long id){ String result = 'delete'+id+'success'; // delete1327success System.out.println(result); return ResponseEntity.ok(result); }

客戶端調用接口

/* * @Author lsc * @Description <p> delete</p> * @Date 2019/10/18 23:22 * @Param [] * @return void **/ @Test public void testDelete(){ String url = 'http://localhost:8090/youku1327/provider/{id}'; restTemplate.delete(url,1327); }

3.5 exchange

參數說明:

第一個參數是url。第二個參數是請求方式。第三個參數是請求實體。第四個參數是返回值類型。第五個參數是uri地址變量。

服務端發(fā)布接口

@GetMapping('user/{name}') public String getUserName(@PathVariable String name){ return name; }

客戶端調用接口

/* * @Author lsc * @Description <p> exchange</p> * @Date 2019/10/18 23:22 * @Param [] * @return void **/ @Test public void testExchange(){ String url = 'http://localhost:8090/youku1327/user/{name}'; HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED); HttpEntity httpEntity = new HttpEntity(httpHeaders); ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class, 'youku1327'); System.out.println(exchange.getBody()); }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 伊人色院成人蜜桃视频 | 国产视频三级 | 欧美亚洲国产一区 | 精品国产综合 | 久久久男女野外野战 | 国产精品久久久久久久久免费hd | 国内自拍区 | 在线国产你懂的 | 中文永久免费观看网站 | 91香蕉在线视频 | 国产精品久久久久无码av | 香蕉视频在线视频 | 男女强吻摸下面揉免费 | 国产视频福利在线 | 亚洲狠狠婷婷综合久久久久网站 | 中文字幕在线网址 | 亚洲国产精品久久综合 | 九九热线精品视频6一 | 一级做a爰视频免费观看2019 | 小明看国产 | 女性特黄一级毛片 | 国产日比视频 | 国产精品夜色视频一区二区 | 国产色综合一区二区三区 | 国产精品国产三级国产在线观看 | 99久久精品免费看国产情侣 | 亚洲一级毛片免观看 | 国产区综合 | 私啪影院 | 十六一下岁女子毛片免费 | 中文字幕无线码欧美成人 | 青青久久久国产线免观 | 在线观看麻豆 | 亚洲综合图片人成综合网 | 精子网久久国产精品 | 欧美视频一区二区三区 | 91免费看视频| 中国欧美日韩一区二区三区 | 亚洲精品一区二区久久 | 欧美日韩在线成人 | 国内精品51视频在线观看 |