首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@QueryParam不设置值

@QueryParam不设置值
EN

Stack Overflow用户
提问于 2016-05-26 16:46:37
回答 1查看 1.7K关注 0票数 2

我有一个网络服务如下:

代码语言:javascript
复制
@POST
@Path("/push")
@Consumes(MediaType.APPLICATION_JSON)
public String push(@QueryParam("comment") String comment,
                   @QueryParam("type") String type){
     // do something
}

我的请求机构是:

代码语言:javascript
复制
{
    "comment" : "comment1",
    "type" : "type1"
}

当发出适当的post请求时,会调用我的web服务,但是参数commenttype具有null值。这里怎么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-26 17:37:37

您将查询参数与Post请求有效负载混淆。

@Query参量查询参数从请求URI查询参数中提取,并使用方法参数参数中的javax.ws.rs.QueryParam注释指定。

查询参数是可选的,如果不设置它们,它们将被设置为null。

如果您希望将‘注释& type’作为查询参数,则应按以下方式传递它们:

代码语言:javascript
复制
http://<HOST:port>/push?comment=comment1&type=type1

相反,Post方法Payload将与您的POST请求一起发送。

在您的示例中,您将“注释”和“type”作为有效负载传递,但它没有映射到任何内容。

如果你想要接收你的有效负载,映射到一个对象,你应该做一些改变。

首先,创建一个带有@XmlRootElement注释的类

代码语言:javascript
复制
@XmlRootElement    
class MyMessage{
String comment;
String type;
//add getter and setter
}

rest入口点如下所示:

代码语言:javascript
复制
@POST
@Path("/push")
@Consumes(MediaType.APPLICATION_JSON)
public String push(MyMessage message){
     String comment = message.getComment()
     String type = message.getType()
     // do something
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37466739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档