我已经使用 Jersey 实现了一个 REST 服务,该服务获取 JSON POST 数据并从 POJO 模型创建一个对象。但是,为了使其正常工作,我必须将 Content-Type 设置为 application/json (即-H "Content-Type: application/json"
)。我想要的是能够使用 JSON POST 请求正文,而无需用户设置标头,基本上就像 Elasticsearch 的工作方式一样:
POST /test_index/_search?search_type=count
{
"aggs": {
"nested_authors": {
"nested": {
"path": "authors"
},
"aggs": {
"author_last_names": {
"terms": {
"field": "authors.last_name"
}
}
}
}
}
}
这是相关代码:
@POST
@Path("/person")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response postPerson(PostBody pb) {
System.out.println(pb.getEmails());
}
我遇到了类似的问题。因为在我看来,一个定义良好的 API(不与任何其他系统共享其端点)不应该依赖于客户端指定正确的Content-Type
,我创建了一个解决方法。在此解决方法中,我向那些我希望 Jersey 始终尝试根据服务器定义读取输入的资源方法添加注释Content-Type
。每当此注释出现时,ResourceFilter
将覆盖Content-Type
请求中的标头,到注释中指定的任何内容。
我在中详细介绍了该过程我的回答在这里 https://stackoverflow.com/a/39068508/1296709.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)