Java Rest path_java – 具有多种类型的REST PathParam

我已经设置了一个REST服务来访问存储在数据库中的信息.

我希望能够根据项目的ID或名称进行访问.

所以我要说我有一个记录

name | id | description

mine | 65 | "my thing"

我希望能够通过以下任一方式访问此项:

myurl.com/items/65

myurl.com/items/mine

我正在使用Jersey(Java库).有没有办法我可以定义PathParam接受int或String WITHOUT使用object.typeOf()?

我想避免这个:

@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.

标签:java,rest,jersey

来源: https://codeday.me/bug/20190521/1148553.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值