Restful 接口傳遞參數

 

首先補充一下什麼是 Restful ,這裏簡單說一下,如果一個架構符合REST原則,就稱它爲RESTful架構。
RESTful架構特點:
  (1)每一個URI代表一種資源;
  (2)客戶端和服務器之間,傳遞這種資源的某種表現層;

 

  (3)客戶端通過四個HTTP動詞,對服務器端資源進行操作,實現"表現層狀態轉化"。

具體介紹參考:

RESTful API 設計指南

RESTful架構簡介


一:沒有 對象類型 的多參數傳遞


@POST
@Path("/addFavor/")
void addFavor(@QueryParam("linkId") String linkId, @QueryParam("userId") List<String> userId,
            @QueryParam("favorTypeCode") String favorTypeCode, @QueryParam("linkTable") String linkTable);

 

另一種方式可以通過 @PathParam 註解參數,這種方式要在 URL 地址後面聲明 如:/{id},多參:/{id}{aaa}{bbb}
@GET
@Path("/{id}")
@ApiMethod(path = "/api/rest/category/{id}", verb = ApiVerb.GET, description = "get category by id", produces = { MediaType.APPLICATION_JSON }, consumes = { MediaType.APPLICATION_JSON })
@ApiResponseObject
Category get(@ApiPathParam(name = "id", description = "The Category id") @PathParam("id") String id);

 

二:包含 對象類型 的多參傳遞

需要在對象前聲明 @ApiBodyObject

 

@POST
@Path("/addFavor/")
void addFavor(@QueryParam("linkId") String linkId, @ApiBodyObject User user,
            @QueryParam("favorTypeCode") String favorTypeCode, @QueryParam("linkTable") String linkTable);

@ApiBodyObject 相當於 SpringMVC 的 @RequestBody

參數註解的作用就是將 xml/json (具體那種看配置,cxf 是json) 轉換爲實體對象如 User 傳遞給實現方法,如下:

@Override
@Transactional(readOnly = false)
public void addFavor(String linkId, User user, String favorTypeCode, String linkTable) {

}

三:多 對象參數 傳遞

Restful 僅支持多個參數中,最多只能有一個是對象參數,就比如一個 Form 表單中只能提交一個對象

解決辦法:將多個對象參數封裝到一個大對象中,比如新建一個 VO 把這些對象參數都放進去,或者放到Map,List 這些也行

 

四:Jersey

上面的代碼基於 Jersey 框架實現,下面來說說 Jersey 與 RESTful 的關係:

開發 RESTful WebService 意味着支持在多種媒體類型以及抽象底層的客戶端-服務器通信細節,如果沒有一個好的工具包可用,這將是一個困難的任務
爲了簡化使用Java開發 RESTful WebService 及其客戶端,一個輕量級的標準被提出:JAX-RS API
Jersey RESTful WebService框架是一個開源的、產品級別的JAVA框架,支持JAX-RS API並且是一個JAX-RS(JSR 311和 JSR 339)的參考實現
Jersey不僅僅是一個JAX-RS的參考實現,Jersey提供自己的API,其API繼承自JAX-RS,提供更多的特性和功能以進一步簡化RESTful service和客戶端的開發

 

Reference:

http://blog.csdn.net/aitcax/article/details/53097562

http://www.tuicool.com/articles/32yYvm

http://liugang594.iteye.com/blog/1496651

http://blog.csdn.net/bapinggaitianli/article/details/46518705

 

關注公衆號,分享乾貨,討論技術,你的支持是我最大的動力!!!

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