我在API开发中使用RESTEasy。我的网址为http://localhost:8080/project/player/M
或http://localhost:8080/project/player
这意味着我将{gender}视为路径参数。
我的问题是如何将这个网址映射到REST方法,我使用下面的映射
@GET
@Path("player/{gender}")
@Produces("application/json")
但如果使用它,则会映射http://localhost:8080/project/player/M
,但不映射http://localhost:8080/project/player
。
我需要一个正则表达式来映射零个或多个路径参数
感谢。
答案 0 :(得分:8)
是否有任何理由必须是路径参数而不是查询字符串?如果将其更改为使用后者,则可以使用@DefaultValue注释。
因此,您的代码将如下所示:
@GET
@Path("player") //example: "/player?gender=F"
@Produces("application/json")
public Whatever myMethod(@QueryParam("gender") @DefaultValue("M") final String gender) {
// your implementation here
}
答案 1 :(得分:4)
路径参数(@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);
}
答案 2 :(得分:1)
请参阅以下链接,其中包含通过正则表达式
的可选路径参数示例答案 3 :(得分:0)
如果要在路径中包含可选参数,则应使用正则表达式。
因此,您的代码将如下所示:
@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