@PathParam没有给我路径变量



我有一个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;
}
}

如果我以-{"user_id":123}的形式传入POST主体,那么上面代码中的id变量包含这个值,而不是URI中的id值。我做错了什么?

您导入了错误的@PathParam。它应该是javax.ws.rs.PathParam。您可能正在导入websocket(当您有javaee-api依赖项时,这是一个常见的错误(。

当你用@Consumes ("application/json")注释你的方法时,这意味着你在告诉你的web服务:这个方法正在等待一个json格式的对象作为参数。这就是为什么您的Stringid会获取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;
}

}

您的呼叫url将如下所示localhost:8080/ShoppingSocieties/Shopping/products/purchase?id=1

最新更新