为了账号安全,请及时绑定邮箱和手机立即绑定

@PathParam 没有给我路径变量

@PathParam 没有给我路径变量

人到中年有点甜 2021-12-10 10:19:03
我有一个 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 依赖项时,这是一个常见的错误)。


查看完整回答
反对 回复 2021-12-10
?
拉莫斯之舞

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


查看完整回答
反对 回复 2021-12-10
  • 2 回答
  • 0 关注
  • 301 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号