我在我的项目中使用 REST-Jersey
。所有 POST 数据都以 JSON
格式发送,并在服务器端解组为相应的 bean。是这样的:
向服务器发送请求:
$('a#sayHelloPost').click(function(event){
event.preventDefault();
var mangaData = {
title:'Bleach',
author:'Kubo Tite'
}
var formData=JSON.stringify(mangaData);
console.log(formData);
$.ajax({
url:'rest/cred/sayposthello',
type: 'POST',
data: formData,
dataType: 'json',
contentType:'application/json'
})
});
有效载荷:
{"title":"Bleach","author":"Kubo Tite"}
服务器端:
@POST
@Path("/sayposthello")
@Produces(MediaType.APPLICATION_JSON)
public Response sayPostHello(MangaBean mb){
System.out.println(mb);
return Response.status(200).build();
}
漫画豆:
public class MangaBean {
private String title;
private String author;
@Override
public String toString() {
return "MangaBean [title=" + title + ", author=" + author + "]";
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
控制台输出:
MangaBean [title=Bleach, author=Kubo Tite]
我从 这里 得到了 REST 拦截器实现。
public class JerseyFilter implements ContainerRequestFilter{
@Override
public ContainerRequest filter(ContainerRequest req) {
return req;
}
}
我想访问拦截器中的有效负载(请求主体)。由于数据为 JSON 格式,因此无法作为请求参数访问。 有没有办法在拦截器方法中获取请求体? 请指教。
原文由 Mono Jamoon 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是您可以实现的一种方式,与 Jersey 实现其日志过滤器的方式非常相似。您可以读取实体并将其粘贴回请求,因此您不小心没有在过滤器中使用它。