分佈式計算學習筆記之四:RESTful Webservice 編程

1. RESTful Webservice 作爲遠程調用(RPC),它的輸入是什麼?輸出是什麼?

輸入時GETPOSTPUTDELETE;輸出是PRODUCE

2. 有一個 Java 遠程函數聲明 public Customer getCustomer(String id),把 HTTP 協議輸入/輸出映射到該函數,至少要申明(annotation)哪些信息?請寫出這些 annotation,並簡單解釋協議與函數的關係。

@GET@Path(“customers/{id}”). 協議類似於一個接口,讓客戶端的函數與服務端交互的時候,有一個統一的標準,常見的協議方法有GETPOSTPUTDELETE等,@Path(“/customers/{id}/”) 項目根訪問該方法的 URI 路徑,其中 {ID} 是一個變量模板, @PathParam(“id”) 可以獲取該變量。

3. 修改 實驗1 @Path @Path(“/myservice/”),請用 curl -v 給出結果

修改路徑,

 

 

命令行下,curl -v http://localhost:9000/myservice/customers/123

結果如下:

 

4. 簡述 GET POST 的區別

GET用於獲取信息,不會修改服務端的數據,是數據安全的;POST可以向服務端發送修改請求,從而修改服務端的數據。

5. 在實際應用中 Map<Long, Customer> customers 使用會產生副作用嗎?爲什麼?

實際應用中可能會產生副作用,例如customerid不唯一時,會導致識別錯誤,又或者在customer數據被刪除後,關聯數據不能及時刪除。

6. Spring IOC DI java 編程核心內容之一。閱讀 Spring IoC 使用詳解 用自己的語言解釋 IoC 解耦原理。

傳統應用程序需要客戶端主動去創建用戶類,用戶信息類,並將用戶信息類注入到用戶類。有了IoC容器後,上述工作就由IoC完成,並且由IoC來管理它們的生命週期。這意味着,創建和查找依賴的控制權交給了容器,由容器進行注入組合對象,所以對象和對象之間是鬆散耦合,便於測試和功能複用。

 

7. (!)使用 Maven 構建(6)給出的案例,項目名稱 IOC_test

8.  Spring 試驗中, 閱讀 beans.xml, 寫出申明根資源的關鍵內容

  <jaxrs:server id="customerService" address="/service1">

        <jaxrs:serviceBeans>

          <ref bean="customerBean" />

        </jaxrs:serviceBeans>

  </jaxrs:server>

 

  <bean id="customerBean" class="demo.jaxrs.server.CustomerService" />

 

9. (!)嘗試寫一個根資源類 Hello,用 GET 方法實現 String SayHello() 遠程服務。請給出 Hello類代碼,增加根資源的配置(不是修改)XML內容,curl測試結果。

package com.example.jaxrs;

@javax.ws.rs.Path("exampleWithInjection")public class StringResource {

    public StringResource() {

        /* use a no-argument constructor */

    }

 

    @javax.ws.rs.core.Context

    private javax.ws.rs.core.HttpHeaders httpHeaders;

 

    @javax.annotation.PostConstruct

    private void myPostConstruct() {

        /* read from the httpHeaders if required */

    }

 

    @javax.ws.rs.GET

    @javax.ws.rs.Produces(javax.ws.rs.core.MediaType.TEXT_PLAIN)

    public String SayHello() {

        return "Hello world!";

    }}

 

 

 

10. WADL 的全稱。從程序結果返回中截取一段 WADL 內容。

Web Application Description Language

 

11. 輸出對象格式協商是 Resquest Header 段的哪個 Field 決定的?

Content-Type

12. JAX-RS 的全稱

Java API for RESTful Web Services

@Produces @Consumers 的作用

@Produces用於指定輸出格式,參數可以是字符串數組;@Consumers指定處理輸入媒體的類型,例如 “Content-Type: application/json”。

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