我有一个 POST 方法(它需要一些 JSON 数据)。我还想访问路径参数“id”以进行处理。但是,当我使用“@PathParam”时,我得到了传递给请求的 JSON 正文。下面是我的代码:@Path("/products")public class PurchaseService { @POST @Consumes("application/json") @Path("{id}/purchase") @Produces(MediaType.APPLICATION_JSON) public String doPurchaseForUser(@PathParam("id") String id) { String result = null; System.out.println("Product : " + id); return id; }}如果我将 POST 正文作为 - {"user_id":123} 传入,则上面代码中的 id 变量将保存此值,而不是来自 URI 的 id 值。我究竟做错了什么 ?
2 回答

牛魔王的故事
TA贡献1830条经验 获得超3个赞
你导入了错误的@PathParam
. 应该是javax.ws.rs.PathParam
。您可能正在导入 websocket 一个(当您拥有 javaee-api 依赖项时,这是一个常见的错误)。

拉莫斯之舞
TA贡献1820条经验 获得超10个赞
当您使用@Consumes ("application/json")它注释您的方法时,意味着您正在告诉您的 Web 服务:此方法正在等待 json 格式的对象作为参数。这就是为什么您的 String id 采用 json 内容的原因。
@Path("/products")
公共类购买服务{
@POST
@Consumes("application/json")
@Path("/purchase")
@Produces(MediaType.APPLICATION_JSON)
public String doPurchaseForUser(@QueryParam("id") String id,JsonObject jsonContent) {
String result = null;
System.out.println("Product : " + id);
return id;
}
}
您的通话网址将如下所示 localhost:8080/ShoppingSocieties/Shopping/products/purchase?id=1
添加回答
举报
0/150
提交
取消