每個Java開發人員應該知道的五種RESTful客戶端程式碼

banq發表於2019-04-25

如何訪問RESTful Web服務?這取決於你想要完成的事情。
如果您只想測試連線性,像curl這樣的基於終端的實用程式是一個很棒的RESTful Web服務客戶端。如果要檢查服務返回給您的JSON,基於瀏覽器的外掛可能更適合。如果您正處於應用程式開發階段,您可能需要使用JAX-RS,Spring或類似的框架。
以下是每個Java開發人員應該知道的五種:

1.Curl
Curl是一個基於Unix的實用程式,它使開發人員能夠從命令列呼叫URL並生成有關REST響應結果的資訊。結果包括頭資料,XML,JSON和各種其他引數,資訊為純文字。Linux使用者傾向於熟悉curl,因為它通常包含在大多數發行版中。
另一方面,curl不包含在Windows作業系統中,因此Microsoft使用者往往不太習慣URL。但是,預設Git安裝始終包含Bash以發出分散式版本控制系統命令。隨著越來越多的Windows使用者採用Git和GitHub,越來越多的開發人員可以立即使用curl命令。
將curl用作簡單GET請求的RESTful Web服務客戶端的語法是:

$ curl -X GET --header "text:Easter" --header "language:fr" http://3.19.68.127/translator-1.0/translate


2.RESTful jQuery客戶端
如果要從基於瀏覽器的應用程式訪問RESTful Web服務,則可能需要使用JavaScript框架。所有流行的JavaScript框架和庫,例如AngularJS,Ember.js,React和jQuery,都提供了可以簡化基於REST的互動的功能。
以下是用jQuery編寫的簡單RESTful Web服務客戶端的示例:

<html><head>
<script src="jquery.min.js"></script>
</head>
<body>
<div id="rest-web-service-client"></div>
<script>

$(document).ready(function() {
    $.ajax({
        url: "http://3.19.68.127/translator-1.0/translate",
        headers: {"language":"fr", "text":"rabbit"}
    }).then(function(data) {
       alert(data); // will display 'lapin'
    });
});
</script>
</body>
</html>


3.基於Java的REST客戶端
開發人員將使用諸如Jakarta EE 或Spring Boot之類的Web開發框架來訪問遠端API,因為這兩個框架都具有用Java編寫RESTful Web服務客戶端的內建庫。
但這種奢侈程度並不是必需的。下面是一個如何在沒有像Spring這樣的框架的情況下訪問RESTful Web服務的示例。此示例僅使用java.net和java.io包:

Socket requestSocket = new Socket("http://mcnz.com", 8080);
PrintWriter writer = new PrintWriter(requestSocket.getOutputStream(),true);
writer.write("GET language-translator/api");
writer.flush();
while(true) {
                int x = requestSocket.getInputStream().read();
                if(x==-1) {
                                break;
                }
}
writer.close();
requestSocket.close();


3.RESTful Web服務框架
所有用於開發企業應用程式和微服務的流行庫都能夠編寫RESTful Web服務客戶端。Spring Boot,Jersey 和JAX-RS在API方面略有不同,但它們足夠相似,開發人員可以輕鬆地從一個轉換到另一個。
下面是一段程式碼,展示瞭如何使用Spring及其RestTemplate建立RESTful Web客戶端:

HttpHeaders headers = new HttpHeaders();
applyAPIKeyToHeader(key, headers);
headers.setContentType(MediaType.APPLICATION_JSON);
String data = getTextToTranslate(textToTranslate, sourceLanguage, destinationLanguage);
HttpEntity<String> request = new HttpEntity<String>(data, headers);
String url = "www.jdon.com";
ResponseEntity<String> response = restTemplate.postForEntity(url, request, String.class);
String responseBody = response.getBody();
translationResult = objectMapper.readValue(responseBody, TranslationsResult.class);


4. REST的Chrome擴充套件程式
如果您無法訪問curl並且您不打算編寫RESTful Web服務客戶端程式碼,那麼您始終可以選擇安裝將呼叫基於REST的服務的Chrome或Firefox擴充套件。Postman是眾多可用的擴充套件之一。

相關文章