json 向REST API发送POST请求时出现415错误

dsf9zpds  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(151)

我正在JavaEE中开发一个REST API,并在ReactJS中使用此API开发一个客户端。
当我使用postman时,API工作得很好,但是当我使用JS中的fetch方法通过客户端发布JSON信息时,我得到了一个415错误:
我的浏览器控制台不支持的媒体类型。
对于API,我使用Jersey处理请求,Hibernate作为ORM。我有genson依赖,正如我所说,一切都工作得很好与 Postman 。在发送之前我也检查了JSON.stringify()的结果,它看起来很好。
另外,在我的服务器的控制台,我得到这个错误,每次我试图张贴任何东西:
GRAVE:未找到Java类模型、用户和Java类型类模型、用户和MIME媒体类型application/octet-stream的消息正文读取器。
我检查并仔细检查了所有内容,我发送了正确的头部,浏览器将请求识别为“application/json”内容类型,但就像我的API仍然不接受它,或者将其作为application/octet-stream媒体类型接收。
下面是执行fetch的方法:

  1. signIn(){
  2. console.log(JSON.stringify(this.state));
  3. fetch('http://localhost:8080/P52/users', {
  4. method: 'POST',
  5. body: JSON.stringify(this.state),
  6. headers: {
  7. 'Content-Type': 'application/json',
  8. 'Accept': 'application/json'
  9. }
  10. }).then(res => {
  11. return res.json();
  12. }).catch(err=>err)
  13. }

字符串
API中接收数据的方法:

  1. @POST
  2. @Consumes(MediaType.APPLICATION_JSON)
  3. public User createUser(User u){
  4. return UserController.createUser(u);
  5. }


控制器只需要创建一个User类的新示例,以在User模型类中运行以下代码:

  1. public User(User u){
  2. this.id = u.getId();
  3. this.pseudo = u.getPseudo();
  4. this.firstname = u.getFirstname();
  5. this.lastname = u.getLastname();
  6. Session session = (Session)HibernateUtil.getSessionFactory().openSession();
  7. session.beginTransaction();
  8. session.save(this);
  9. session.getTransaction().commit();
  10. session.close();
  11. }


如果任何人有我的问题的答案或已经面临它,请让我知道,所以我可以最终推进这个项目。

baubqpgj

baubqpgj1#

415不支持的媒体类型(https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/415
试着改变

  1. @Consumes(MediaType.APPLICATION_JSON)

字符串

  1. @Consumes(MediaType.APPLICATION_JSON_VALUE)

相关问题