[英]REST PathParam with Multiple Types
我已經設置了REST服務來訪問存儲在數據庫中的信息。
我希望能夠根據商品的id
或name
進行訪問。
所以說我有唱片
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.