java - REST 如何在 URI 中传递空路径参数?

标签 java rest jax-rs

我正在开发一个 Restful 网络应用程序。 在此,我采用的参数是 userid 和 orderid。

userid 可以是null
URI 是 @Path("api/user/userid/order/orderid") 我的方法是,

void add(@PathParam("userid") String userId, @PathParam("orderid") String orderId);

我想在 URI 中为 userId 传递空值。

我尝试了 api/user//order/1234。但在这种情况下,userid 采用 orderId 的值(即 1234 和 orderIdnull。(是错误的)

我还尝试将路径更改为 @Path("api/user/userid: .*/order/orderid")。然而与之前的结果相同。

解决此问题的其他方法可能是,为 userid 使用 @QueryParam 或为 userid null 创建另一个方法。

但我想知道是否有办法将 userId 作为 PathParameter 而不是 QueryParam 并传递 useridnull?

最佳答案

将 URL 参数设置为 null 是无效的。

POST 到 URL api/user/userid/order/orderid 表示“为此用户创建订单”。 GETting 到同一个 URL 会说“为我检索这个用户的特定订单”。两者都在用户的上下文中。

要在用户上下文之外创建或检索订单,只需删除 URL 的这两部分...

api/order/orderid

这将允许您在客户范围之外创建和获取订单。这也适用于用户的上下文。如果您发布没有用户 ID 的订单,没有人会在意,但可以指定一个。如果您获得订单,它不应该关心它是针对哪个客户的,除非您的订单 ID 在客户之间不是唯一的,但这可能不是一个好主意,但这是一个单独的讨论。

关于java - REST 如何在 URI 中传递空路径参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11266349/

相关文章:

java - JSF 2 viewScope bean 瞬时注入(inject) Spring 服务 bean

java - JAX-RS 网络服务的主要应用程序

rest - JAX-RS 和未知的查询参数

java - 无法使用 JAX-RS 上传文件

java - 当我尝试在另一个类中访问静态变量时,为什么它为空?

java - 运行 EJB 示例项目时出现错误 500 : java. lang.NullPointerException

java - Solaris:在应用程序的处理程序上安装文件系统

javascript - Tomcat REST API 上的 CORS 访问

ruby-on-rails - 我们如何将 grape api 资源分离到多个文件中?

java - Swagger 不生成 REST 文档