Resteasy @path 具有零个或多个路径参数

发布于 2024-12-28 09:21:35 字数 464 浏览 1 评论 0原文

我在 API 开发中使用 RESTEasy。我的网址是 http://localhost:8080/project/player/Mhttp://localhost:8080/project/player

这意味着我将 {gender} 传递为路径参数

我的问题是如何将此网址映射到 REST 方法,我使用下面的映射

@GET
@Path("player/{gender}")
@Produces("application/json")

,但如果使用它,它会映射到 http://localhost:8080/project/player/M 但不映射到 http://localhost:8080/project/player。 我需要一个正则表达式来映射零个或多个路径参数

谢谢。

I am using RESTEasy in my API development. My url is http://localhost:8080/project/player/M or http://localhost:8080/project/player

it means am pasing {gender} as path param.

my problem is how to mapp this url to REST method, i use below mapping

@GET
@Path("player/{gender}")
@Produces("application/json")

but if use it, it maps for http://localhost:8080/project/player/M but not for http://localhost:8080/project/player.
i need a regular expression to map zero or more path parameters

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

灼痛 2025-01-04 09:21:35

有什么原因这必须是路径参数而不是查询字符串吗?如果将其更改为使用后者,则可以使用 @DefaultValue 注释。

所以你的代码将如下所示:

@GET
@Path("player") //example: "/player?gender=F"
@Produces("application/json")
public Whatever myMethod(@QueryParam("gender") @DefaultValue("M") final String gender) {
  // your implementation here
}

Is there any reason this must be a path parameter and not a query string ? If you change it to use the latter, then you can use a @DefaultValue annotation.

So your code would then look like the following:

@GET
@Path("player") //example: "/player?gender=F"
@Produces("application/json")
public Whatever myMethod(@QueryParam("gender") @DefaultValue("M") final String gender) {
  // your implementation here
}
梦中的蝴蝶 2025-01-04 09:21:35

路径参数 (@PathParam) 不是可选的。如果你想绘制地图;

您将需要两种方法。可以使用方法重载;

@GET
@Path("player/{gender}")
@Produces("application/json")
public Whatever myMethod(@PathParam("gender") final String gender) {
  // your implementation here
}

@GET
@Path("player")
@Produces("application/json")
public Whatever myMethod() {
  return myMethod(null);
}

Path parameters (@PathParam) aren't optional. If you want to map;

You will need two methods. You can use method overloading;

@GET
@Path("player/{gender}")
@Produces("application/json")
public Whatever myMethod(@PathParam("gender") final String gender) {
  // your implementation here
}

@GET
@Path("player")
@Produces("application/json")
public Whatever myMethod() {
  return myMethod(null);
}
梦里兽 2025-01-04 09:21:35

请参阅以下链接,其中包含通过正则表达式的可选路径参数的示例

RestEasy @Path Question with正则表达式

See the below link which has a sample of optional path parameters via regular expressions

RestEasy @Path Question with regular expression

揽月 2025-01-04 09:21:35

当您想在路径中包含可选参数时,应该使用正则表达式。

因此,您的代码将如下所示:

@GET
@Path("/player{gender : (/\\w+)?}")
@Produces("application/json;charset=UTF-8")
public Whatever myMethod(@QueryParam("gender") @DefaultValue("M") final String gender) {
  // your implementation here
}

有关详细信息,请参阅 https://docs.jboss.org/resteasy/docs/1.1.GA/userguide/html/Using__Path_and__GET___POST__etc..html

You should use regex when you want have optional parameter in path.

So your code would then look like the following:

@GET
@Path("/player{gender : (/\\w+)?}")
@Produces("application/json;charset=UTF-8")
public Whatever myMethod(@QueryParam("gender") @DefaultValue("M") final String gender) {
  // your implementation here
}

For more information see https://docs.jboss.org/resteasy/docs/1.1.GA/userguide/html/Using__Path_and__GET___POST__etc..html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文