RESTful的簡單介紹與實例

          RESTful的概念:一種軟件架構風格,設計風格而不是標準,只是提供了一組設計原則和約束條件。它主要用於客戶端和服務器交互類的軟件。基於這個風格設計的軟件可以更簡潔,更有層次,更易於實現緩存等機制。該理念是由Roy Thomas Fielding在他2000年的博士論文中提出的。


         實例:

        首先需要導入所需的jar包:

           activation-1.1.1.jar

           asm-3.3.1.jar

           jackson-core-asl-1.9.2.jar

           jackson-jaxrs-1.9.2.jar

           jackson-mapper-asl-1.9.2.jar

           jaxb-api-2.2.4.jar

           jaxb-impl-2.2.4-1.jar

           jersey-bundle-1.12.jar

           jersey-client-1.12.jar

           jersey-core-1.12.jar

           jersey-json-1.12.jar

           jersey-server-1.12.jar

           jettison-1.1.jar

           stax-api-1.0-2.jar

       然後需要配置web.xml,用來將所有的 REST 請求發送到 Jersey 容器

          <servlet>
        <display-name>JAX-RS REST Servlet</display-name>
        <servlet-name>JAX-RS REST Servlet</servlet-name>
        <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>

        <!-- com.sun.jersey.spi.container.servlet.ServletContainer    -->
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>com.web.rest</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>JAX-RS REST Servlet</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>

    其中參數名爲com.sun.jersey.config.property.packages所對應的值是com.web.rest,也就是說在包com.web.rest下聲明的所有RESTful的註釋的資源當客戶端發送請求時都將被激活。

   例如:com.web.rest包下的類TestRest

     @Path("/testRest")

     public class TestRest {
   
    @GET  
    @Produces(MediaType.TEXT_PLAIN)  
    public String sayHello() {  
        return "Hello Jersey";  
    }  

}

當我們在瀏覽器地址欄中輸入:http://localhost:8080/項目名稱/rest/testRest/時,發送請求後,這個請求會被送到Jersey 容器,然後根據http協議中的信息,進行判斷,調用相關的類方法,返回的數據可以以不同的形式響應客戶端。

    @Path用於指定唯一的資源uri,由於com.sun.jersey.spi.spring.container.servlet.SpringServlet映射的路徑是/rest/*,當爲某一個類或方法指定@Path時,那麼他的真實uri爲:http://localhost:8080/項目名稱/rest/testRest

    @GET:這意味着以下方法可以響應 HTTP GET 方法。常見的HTTP響應方式(GET、POST、PUT、DELETE)

    @Produces:以純文本方式定義響應內容 MIME 類型。常見的MIME類型(XML,JSON,HTML)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章