簡體   English   中英

多種類型的REST PathParam

[英]REST PathParam with Multiple Types

我已經設置了REST服務來訪問存儲在數據庫中的信息。

我希望能夠根據商品的idname進行訪問。

所以說我有唱片

name | id | description
mine | 65 | "my thing"

我希望能夠通過以下任一方式訪問此項目:

myurl.com/items/65
myurl.com/items/mine

我正在使用Jersey(Java庫)。 有沒有一種方法可以定義PathParam以使用object.typeOf()接受int或不帶String的字符串?

我想避免這種情況:

@PATH("/items/{identifier}
@GET
public String getItem(@PathParam("identifier") Object identifier){
     if(identifier.typeOf().equals(String.typeOf()))....

}

謝謝

如果您正在尋找一種“干凈”的解決方案-我認為沒有解決方案。 但是您可以這樣做:

@PATH("/items/{identifier}")
public String getItem(@PathParam("identifier") String identifier){
   try {
       return getByID( Long.parseLong(identifier) );
   } catch (NumberFormatException ex) {
       return getByName( identifier );
   }
}

另外,它不會編譯-沒有諸如typeOf()這樣的方法:

if(identifier.typeOf().equals(String.typeOf()))

我想你的意思是:

if (identifier instanceof String) 

編輯 :無論如何,您的原始想法(將參數類型設置為Object ,然后檢查確切的實例類型)將無法正常工作; 容器無法知道path元素可能是整數,因此它不會嘗試將其解析為整數,並且每次只會為您提供一個String

暫無
暫無

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

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