gpt4 book ai didi

java - 具有多种类型的 REST PathParam

转载 作者:搜寻专家 更新时间:2023-10-31 20:06:19 26 4
gpt4 key购买 nike

我已经设置了一个 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,然后检查确切的实例类型)是行不通的;容器无法知道路径元素可能是一个整数,因此它不会尝试将其解析为一个整数,它只会每次给你一个 String

关于java - 具有多种类型的 REST PathParam,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5982906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com