@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;

    }

}

如果我将 POST 正文作为 - {"user_id":123} 传入,则上面代码中的 id 变量将保存此值,而不是来自 URI 的 id 值。我究竟做错了什么 ?


人到中年有点甜
浏览 302回答 2
2回答

牛魔王的故事

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

拉莫斯之舞

当您使用@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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java