我正在JavaEE中开发REST API,并在ReactJS中使用此API开发客户端。
当我使用postman时,API工作得很好,但是只要我在JS中使用fetch方法通过我的客户端发送JSON信息,我就会收到415错误:我的浏览器控制台中有不支持的Mediatype。
对于API,我使用Jersey来处理请求,使用Hibernate作为ORM。我有genson依赖,正如我所说,everythig与Postman完美搭配。 我在发送它之前还检查了JSON.stringify()的结果,它看起来很好。
另外,在我服务器的控制台中,每当我尝试发布任何内容时,我都会收到此错误:
GRAVE: A message body reader for Java class model.User, and Java type class model.User, and MIME media type application/octet-stream was not found.
我检查并仔细检查了所有内容,我发送了正确的标题,浏览器将请求标识为'application / json'内容类型,但它就像我的API仍然不接受它,或者接收它作为应用程序/ octet-stream mediatype。
以下是完成提取的方法:
signIn(){
console.log(JSON.stringify(this.state));
fetch('http://localhost:8080/P52/users', {
method: 'POST',
body: JSON.stringify(this.state),
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
}).then(res => {
return res.json();
}).catch(err=>err)
}
在API中接收数据的方法:
@POST
@Consumes(MediaType.APPLICATION_JSON)
public User createUser(User u){
return UserController.createUser(u);
}
控制器只是创建一个User类的新实例,以便在User模型类中运行此代码:
public User(User u){
this.id = u.getId();
this.pseudo = u.getPseudo();
this.firstname = u.getFirstname();
this.lastname = u.getLastname();
Session session = (Session)HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
session.save(this);
session.getTransaction().commit();
session.close();
}
如果有人对我的问题有答案或者已经面对它,请告诉我,这样我终于可以继续推进这个项目了。
提前谢谢你,
亚瑟
答案 0 :(得分:0)
415是不支持的媒体类型(https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/415)
尝试更改
@Consumes(MediaType.APPLICATION_JSON)
到
@Consumes(MediaType.APPLICATION_JSON_VALUE)