具有多种类型的 REST PathParam
我设置了一个 REST 服务来访问数据库中存储的信息。
我希望能够根据项目的 id
或 name
进行访问。
假设我有一条记录,
name | id | description
mine | 65 | "my thing"
我希望能够通过以下任一方式访问此项目:
myurl.com/items/65
myurl.com/items/mine
我正在使用 Jersey(Java 库)。有没有一种方法可以定义 PathParam 来接受 int 或 String 而不使用 object.typeOf() ?
我想避免这种情况:
@PATH("/items/{identifier}
@GET
public String getItem(@PathParam("identifier") Object identifier){
if(identifier.typeOf().equals(String.typeOf()))....
}
谢谢
I've got a REST service set up to access information stored in a database.
I'd like to be able to access based on either an item's id
or name
.
So lets say I've got a record
name | id | description
mine | 65 | "my thing"
I'd like to be able to access this item through either:
myurl.com/items/65
myurl.com/items/mine
I'm using Jersey (Java library). Is there a way I can define the PathParam to accept either an int or a String WITHOUT using object.typeOf()?
I'd like to avoid this:
@PATH("/items/{identifier}
@GET
public String getItem(@PathParam("identifier") Object identifier){
if(identifier.typeOf().equals(String.typeOf()))....
}
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您正在寻找一种“干净”的解决方案 - 我认为没有。但你可以这样做:
另外,这不会编译 - 没有像
typeOf()
这样的方法:我想你的意思是:
编辑:无论如何,你最初的想法(将参数类型设置为
Object
,然后检查确切的实例类型)将不起作用;容器无法知道路径元素可能是整数,因此它不会尝试将其解析为整数,并且每次都会给您一个String
。If you're looking for a "clean" solution - I don't think there is one. But you could do this:
Also, this won't compile - there's no such method as
typeOf()
:I think you meant:
EDIT: And anyway, your original idea (setting the parameter type to
Object
, then checking for the exact instance type) won't work; the container has no way of knowing that the path element may be an integer, so it won't attempt to parse it as an integer, and it'll just give you aString
every time.