簡體   English   中英

Web服務Java JAX-RS中的多個參數

[英]multiple parameters in web service java JAX-RS

我正在編寫Jersey RESTful Web服務。 我所有的方法,例如添加,刪除,開始工作。 但是我想要創建顯示誰借用什么書的方法。

public class UserManagement {

private Map<Long, UserMaker> userMaker = DataBase.getUserMaker();

public UserManagement(){           //id , name, surname, nin, status of book
userMaker.put((long) 1, new UserMaker(1,"John", "Castles", 12345,0)); 

public UserMaker hireBook(UserMaker user, BookMaker book){         // method who update status hiring book  , if 0 that means book is rented
    if(user.getId() <= 0){
        return null;
    }
    book.setStatus((int) user.getId());                //
    user.setWhatIhave((int) (book.getId()));          // convert int to long
    userMaker.put(user.getId(), user);
    return user;
}  }

現在我想使用具有多個參數的方法

@Path("/user")
public class UserCRUD {

UserManagement userManagementWS = new UserManagement();

@PUT
@Path("/{idU}/{idB}")             
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public UserMaker hireBook(
                          @PathParam("idU") long idU, UserMaker user,
                          @PathParam("idB") long idB, BookMaker book) {
    user.setId(idU);
    return userManagementWS.hireBook(user, book);             //borrowing books
} }

我得到了錯誤,但一切都很好:

Method public project.emil.lib.model.UserMaker project.emil.lib.resources.UserCRUD.hireBook(long,project.emil.lib.model.UserMaker,long,project.emil.lib.model.BookMaker) on resource class project.emil.lib.resources.UserCRUD contains multiple parameters with no annotation. Unable to resolve the injection source.

有小費嗎? :)

資源方法不能具有多個實體參數。 您可以有多個@PathParam@QueryParam等,但是每個資源方法中只能有一個未注釋的參數。

3.3.2.1實體參數未用@FormParam或第3.2節中列出的任何注釋注釋的參數值(稱為實體參數)是從請求實體主體映射的。 實體主體和Java類型之間的轉換是實體提供者的責任,請參見第4.2節。 資源方法必須最多具有一個實體參數。

http://download.oracle.com/otn-pub/jcp/jaxrs-2_1-final-eval-spec/jaxrs-2_1-final-spec.pdf

您可以從資源方法中刪除UserMaker user ,而是將用戶ID傳遞給userManagementWS.hireBook(idU, book) 然后通過userMaker.get(idU)Map<Long, UserMaker>檢索用戶。 https://docs.oracle.com/javase/8/docs/api/java/util/Map.html#get-java.lang.Object-

但我建議您重組api。 我發現此鏈接非常有幫助, http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM