㈠ 如何使用RestTemplate訪問restful服務
一. 什麼是RestTemplate
傳統情況下在java代碼里訪問restful服務,一般使用Apache的HttpClient。不過此種方法使用起來太過繁瑣。spring提供了一種簡單便捷的模板類來進行操作,這就是RestTemplate。
二、舉個例子。 //請求地址
String url = "http://localhost:8080/testPost";
//入參
RequestBean requestBean = new RequestBean();
requestBean.setTest1("1");
requestBean.setTest2("2");
requestBean.setTest3("3");
RestTemplate restTemplate = new RestTemplate();
ResponseBean responseBean = restTemplate.postForObject(url, requestBean, ResponseBean.class);
從這個例子可以看出,使用restTemplate訪問restful介面非常的簡單粗暴無腦。(url,
requestMap, ResponseBean.class)這三個參數分別代表 請求地址、請求參數、HTTP響應轉換被轉換成的對象類型。
RestTemplate方法的名稱遵循命名約定,第一部分指出正在調用什麼HTTP方法,第二部分指示返回的內容。本例中調用了restTemplate.postForObject方法,post指調用了HTTP的post方法,Object指將HTTP響應轉換為您選擇的對象類型。
三.手動指定轉換器(HttpMessageConverter)
我們知道,調用reseful介面傳遞的數據內容是json格式的字元串,返回的響應也是json格式的字元串。然而restTemplate.postForObject方法的請求參數RequestBean和返回參數ResponseBean卻都是java類。是RestTemplate通過HttpMessageConverter自動幫我們做了轉換的操作。
默認情況下RestTemplate自動幫我們注冊了一組HttpMessageConverter用來處理一些不同的contentType的請求。
如StringHttpMessageConverter來處理text/plain;來處理application/json;來處理application/xml。
你可以在org.springframework.http.converter包下找到所有spring幫我們實現好的轉換器。
如果現有的轉換器不能滿足你的需求,你還可以實現org.springframework.http.converter.HttpMessageConverter介面自己寫一個。
四.設置底層連接方式
要創建一個RestTemplate的實例,您可以簡單地調用默認的無參數構造函數。這將使用java.NET包中的標准Java類作為底層實現來創建HTTP請求。
但很多時候我們需要像傳統的HttpClient那樣設置HTTP請求的一些屬性。RestTemplate使用了一種很偷懶的方式實現了這個需求,那就是直接使用一個HttpClient作為底層實現......
五.設置攔截器(ClientHttpRequestInterceptor)
有時候我們需要對請求做一些通用的攔截設置,這就可以使用攔截器進行處理。攔截器需要我們實現org.springframework.http.client.ClientHttpRequestInterceptor介面自己寫。
以上是如何使用RestTemplate方便快捷的訪問restful介面。其實RestTemplate的功能非常強大
㈡ 如何在Java客戶端調用RESTful服務
public static void main(String[] args) { Store store = new Store();// 准備參數 // 首先創建一個webservice客戶端,參數依次為:webservice的url, webservice的名稱, webservice的方法, 參數列表, 返回類型, 泛型的類型(不需要泛型就傳入null) WebserviceClient client = new WebserviceClient(", "store", "find", new Object[] { store }, List.class, Store.class); List<Store> list = client.execute();// 調用webservice System.out.println("從伺服器返回" + list.size() + "個商品");// 得到了服務端返回的數據 }
㈢ java使用restful格式有什麼好處
好處:
1.REST規范:強調HTTP應當以資源為中心,並且規范了資源URI的風格;
2.規范了HTTP請求動作(PUT,POST等)的使用,具有對應的語義;
3.遵循REST規范的Web應用將會獲得下面好處:
a.URL具有很強可讀性的,具有自描述性;
b.資源描述與視圖的松耦合;
c.可提供OpenAPI,便於第三方系統集成,提高互操作性;
d.如果提供無狀態的服務介面,可提高應用的水平擴展性;