在 Java 中開發 Web 應用程式大多使用 Servlet、JSP 等標準,這些架構主要設計是以Web Application為主要訴求,而另外一個常見的應用則是Web Services。

設計Web Services,可以使用以SOAP/WSDL等XML-Based的技術,定義是較為嚴謹的Web services;或是以另一種以純文字為基礎,來儲存和交換簡單結構的輕量級資料交換格式的JSON 。這兩種技術分別對應為JAX-WSJAX-RS

而App所使用的WebApi便是使用以 JAX-RS 為標準的 Jersey 做為開發環境。

REST

REST是 Representational State Transfer 的縮寫,而REST並非是個標準或協定,而是一個設計理念。

REST把所有WEB上的東西都以一個資源去看待,並且所有資源都會有一個URI(Uniform Resource Identifier),這個概念對應Web就是網址。

HTTP請求有幾種Method,常見的有GET跟POST,比較少見的有PUT跟DELETE。在當初設計HTTP時,有這樣的設計是希望GET代表取得資源,POST代表的是新增資源,而PUT跟DELETE就分別代表更新跟移除資源。

那RESTful Web Services則是是以HTTP為基礎,並以REST為設計精神,必且有以下三個特色

  1. 所有的API或是以Resource的形式存在,例如 htttp://www.example.com/products/12345
  2. 這個服務可以接受與返回某個MIME-TYPE,最常見的是JSON格式,也可以回傳PNG/JPG/TXT等格式。
  3. 對資源的操作會支援各種請求方法 (例如GET, POST, PUT, DELETE)

有了RESTful基本概念,那要開始介紹的是Java對RESful Web Service的解決方案:JAX-RS。

JAX-RS跟所有Java EE的技術一樣,它只提供了技術標準,可以允許各家廠商有自己的實作,我們目前用的Jersey即是實作之一。

假設我們有一個簡單的hello的resource,他的URI可能是:

http:///localhost:8080/hello/Polory

我們希望輸出是:

Hello, Polory

那這個簡單的應用的程式碼可能如下

@Path("/hello")   
public class HelloRS {
    @GET
    @Path("/{name}")
    public String sayHello(@PathParam("name") String name) {
        return "Hello, " + name;
    }
}

results matching ""

    No results matching ""