欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Springboot集成restTemplate過程詳解

 更新時間:2020年04月22日 11:03:05   作者:知識追尋者  
這篇文章主要介紹了Springboot集成restTemplate過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

一restTemplate簡介

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

二restTemplate常用方法列表

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

2.1 get請求方法預覽

2.2 post方法請求預覽

2.3put請求方法預覽

2.4 delete請求方法預覽

2.5exchange方法預覽

三rest接口調用示例

restTemplate配置

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

/**
 * @Author lsc
 * @Description <p> </p>
 * @Date 2019/10/14 11:40
 * @Version 1.0
 */
@Configuration
public 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參數(shù)說明:

  • 第一個參數(shù)是url。
  • 第二個參數(shù)是返回值類型。
  • 第三個參數(shù)是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請求參數(shù)說明

第一個參數(shù)是url。第二個參數(shù)是請求參數(shù)。第三個參數(shù)是返回值類型。第三個參數(shù)是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);
    // 封裝參數(shù)和頭信息
    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請求參數(shù)說明

第一個參數(shù)是url。第二個參數(shù)是請求參數(shù)。第三個參數(shù)是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);
    // 封裝參數(shù)和頭信息
    HttpEntity<JSONObject> httpEntity = new HttpEntity(jsonObject,httpHeaders);
    String url = "http://localhost:8090/youku1327/provider/{id}";
    restTemplate.put(url, httpEntity, 1327);
  }

3.4delete請求示例

DELETE請求參數(shù)說明

第一個參數(shù)是url第二個參數(shù)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

參數(shù)說明:

第一個參數(shù)是url。第二個參數(shù)是請求方式。第三個參數(shù)是請求實體。第四個參數(shù)是返回值類型。第五個參數(shù)是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());
  }

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

相關文章

  • Java實現(xiàn)駝峰與下劃線互轉的方法

    Java實現(xiàn)駝峰與下劃線互轉的方法

    這篇文章主要為大家詳細介紹了Java實現(xiàn)駝峰與下劃線互轉的方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-04-04
  • spring task @Scheduled注解各參數(shù)的用法

    spring task @Scheduled注解各參數(shù)的用法

    這篇文章主要介紹了spring task @Scheduled注解各參數(shù)的用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java實現(xiàn)簡易學籍管理系統(tǒng)

    Java實現(xiàn)簡易學籍管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Java實現(xiàn)簡易學籍管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java 基于UDP協(xié)議實現(xiàn)消息發(fā)送

    Java 基于UDP協(xié)議實現(xiàn)消息發(fā)送

    這篇文章主要介紹了Java 基于UDP協(xié)議實現(xiàn)消息發(fā)送,幫助大家更好的理解和學習Java網(wǎng)絡編程,感興趣的朋友可以了解下
    2020-11-11
  • java獲取時間的方法總結

    java獲取時間的方法總結

    以下是對java中獲取時間的幾種方法進行了詳細的分析介紹,需要的朋友可以參考下
    2013-07-07
  • Java Date與String的相互轉換詳解

    Java Date與String的相互轉換詳解

    這篇文章主要介紹了Java Date與String的相互轉換詳解的相關資料,需要的朋友可以參考下
    2017-02-02
  • SpringCloud之Feign遠程接口映射的實現(xiàn)

    SpringCloud之Feign遠程接口映射的實現(xiàn)

    這篇文章主要介紹了SpringCloud之Feign遠程接口映射的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • 如何解決@Valid對象嵌套List對象校驗無效問題

    如何解決@Valid對象嵌套List對象校驗無效問題

    這篇文章主要介紹了如何解決@Valid對象嵌套List對象校驗無效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • jvm細節(jié)探索之synchronized及實現(xiàn)問題分析

    jvm細節(jié)探索之synchronized及實現(xiàn)問題分析

    這篇文章主要介紹了jvm細節(jié)探索之synchronized及實現(xiàn)問題分析,涉及synchronized的字節(jié)碼表示,JVM中鎖的優(yōu)化,對象頭的介紹等相關內容,具有一定借鑒價值,需要的朋友可以參考下。
    2017-11-11
  • Java中.divide()方法使用及注意事項詳解

    Java中.divide()方法使用及注意事項詳解

    divide方法就是bigdecimal類中的一個除法計算方法,由于該divide方法參數(shù)類型眾多并且不易理解容易出現(xiàn)錯誤,這篇文章主要給大家介紹了關于Java中.divide()方法使用及注意事項的相關資料,需要的朋友可以參考下
    2024-03-03

最新評論