java - 使用 Jersey 2.21 的 REST API 请求中的可选参数

标签 java rest jersey jersey-2.0

我正在玩弄 Jersey 2.21 我想知道是否可以有一个“可选”参数,它可以或不可以出现在对服务器的请求中.

我想成功访问这两个方法:

http://localhost:8080/my_domain/rest/api/myMethod/1
http://localhost:8080/my_domain/rest/api/myMethod

如您所见,我正在尝试使整数 (id) 参数成为可选参数。

我声明了 myMethod 如下:

@GET
@Path("myMethod/{id}")
@Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8")
public String myMethod(@PathParam("id") Integer id, @Context HttpHeaders hh)

这个有效:

http://localhost:8080/my_domain/rest/api/myMethod/1

这也行:

http://localhost:8080/my_domain/rest/api/myMethod/

但是这行不通,我不明白为什么。它抛出一个 404 Not Found 错误:

http://localhost:8080/my_domain/rest/api/myMethod

你能指出正确的方向来解决这个问题吗?我不喜欢在我的所有 REST 方法调用中强制使用斜杠,并希望尽可能禁止使用它。

最佳答案

有一种方式可以更简单地做到这一点:

@GET
@Path("myMethod/{id}")
public String myMethod(@PathParam("id") Integer id) {
}

@GET
@Path("myMethod")
public String myMethod() {
  return myMethod(null);
}

不需要棘手的正则表达式。

关于java - 使用 Jersey 2.21 的 REST API 请求中的可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32765804/

相关文章:

ruby-on-rails - Ruby on Rails具有ActiveRecord错误处理的怪异行为

java - Gradle嵌套项目配置

java - 我应该使用哪种设计模式来通知更改? Java/Kotlin 安卓

java - 当用户点击屏幕时如何退出无限循环?

c# - 使用 C# 代码使用 REST 服务

java - 如何使用存储过程通过 Java ReSTful Web 服务中的输入参数值来完成更新和创建记录操作

java - Jersey QueryParam 接收为 null

css - 有没有办法修改 Jersey 生成的 XML 响应以包含样式表信息?

java - REST api 未从客户端调用 Web 服务

java - 如何使用 Scala 中的 Guava 类 (HashMultiset)?