java之RestTemplate的訪問應用


  一、REST即表述性狀態傳遞(英文:Representational State Transfer,簡稱REST)是Roy Fielding博士在2000年他的博士論文中提出來的一種軟件架構風格。它是一種針對網絡應用的設計和開發方式,可以降低開發的復雜性,提高系統的可伸縮性。

  目前在三種主流的 Web服務實現方案中,因為REST模式的Web服務與復雜的SOAP和 XML-RPC對比來講明顯的更加簡潔,越來越多的web服務開始采用REST風格設計和實現。例如,Amazon.com提供接近REST風格的Web服務進行圖書查找; 雅虎提供的Web服務也是REST風格的。
  二、RestTemplate是Spring提供的用於訪問Rest服務的客戶端,RestTemplate提供了多種便捷訪問遠程Http服務的方法,能夠大大提高客戶端的編寫效率。調用RestTemplate的默認構造函數,RestTemplate對象在底層通過使用java.net包下的實現創建HTTP 請求,可以通過使用ClientHttpRequestFactory指定不同的HTTP請求方式。
  三、這里主要介紹幾種RestTemplate的用法
  1)第一種post請求
  public ResponseEntity doPost(String url, Map<String,Object> map) {
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
        Gson gson = new Gson();
        HttpEntity<String> httpEntity = new HttpEntity(gson.toJson(map), httpHeaders);
        ResponseEntity responseEntity = restTemplate.exchange(url, HttpMethod.POST, httpEntity, Object.class);
        return responseEntity;
    }

  說明:這種方式主要是用於post數據的傳輸,因為rest的簡潔性,在使用上面也會得到恨到的應用。

  2)第二種get請求

   public ResponseEntity doGet(String url) {
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.setContentType(MediaType.TEXT_HTML);
        HttpEntity<String> httpEntity = new HttpEntity(httpHeaders);
        ResponseEntity responseEntity = restTemplate.exchange(url, HttpMethod.GET, httpEntity, Object.class);
        return responseEntity;
    }

  說明:get請求沒有太大的解釋,基本上面的設置都是這樣

  3)第三種from方式

  public ResponseEntity doFrom(String url, LinkedMultiValueMap<String, Object> map) {
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
        HttpEntity<LinkedMultiValueMap<String, Object>> httpEntity = 
      new HttpEntity(map, httpHeaders); ResponseEntity responseEntity = restTemplate.exchange(url, HttpMethod.POST, httpEntity, Object.class); return responseEntity; }

  說明:表單的方式使用雖然不常見,但是應用的時候也需要注意幾點,數據形式LinkedMultiValueMap和HashMap不同存儲方式的是name=rest&password=123。

  而Content-Type的方式為application/x-www-form-urlencoded。這種表單處理方式,對於數據的處理上面要特別注意

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM