为了账号安全,请及时绑定邮箱和手机立即绑定

POST 请求期间出现错误 400(错误请求)

POST 请求期间出现错误 400(错误请求)

BIG阳 2022-07-06 19:11:22
我正在尝试从我的反应应用程序向我的服务器发送POST请求,但是我不断收到状态 400 Bad Request错误。例外是:“org.springframework.http.converter.HttpMessageNotReadableException”。错误信息是:“JSON 解析错误:无法从 START_ARRAY 令牌中反序列化 java.util.LinkedHashMap 的实例;嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException:无法从 START_ARRAY 令牌中反序列化 java.util.LinkedHashMap 的实例\n [来源:java.io.PushbackInputStream@6a188b06;行:1,列:1]"我尝试使用POSTMAN测试 API,但仍然遇到同样的错误。@PostMapping("/cart")public Cart create(@RequestBody CartRequest cartRequest){  return cartRepository.save(new Cart(0,cartRequest.getProductname()));}我的模特课是public class CartRequest {String productname;public CartRequest(int productid, String productname) {    this.productname = productname;}public String getProductname() {    return productname;}public void setProductname(String productname) {    this.productname = productname;}@Overridepublic String toString() {    return "CartRequest{" +            ", productname='" + productname + '\'' +            '}';}}存储库类如下public interface CartRespository extends JpaRepository<Cart, Integer> {    }请求代码如下import React, { Component } from "react";import axios from 'axios';import NavBar from "./navbar";export default class Products extends Component {state = {    isLoading: true,    groups: [],};constructor(props){    super(props);    {         this.add = this.add.bind(this);    }}add(id, name) {    axios({    method: 'post',    url: '/api/cart',    body: {      productid: id,      productname: name    }  });}async componentDidMount() {    const response = await fetch('api/product');    const body = await response.json();    this.setState({ groups: body, isLoading: false });}发送请求的Button如下{this.state.groups.map(group => <button key={group.id} onClick={() => this.add(group.productid, group.name)} className="flex-c-m size1 bg4 bo-rad-23 hov1 s-text1 trans-0-4">Add to Cart</button>)}我正在尝试执行的是从产品中接收信息并将其添加到购物车中。已使用GET请求接收到产品信息。
查看完整描述

1 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

使您的控制器的方法如下所示:


@PostMapping("/cart")

public Cart create(@RequestBody Map<Integer, Integer> body){

    int productid = body.get("productid");

    String productname=body.get("productname");


    return cartRepository.save(new Cart(productid, productname));

}

顺便说一句,您可以将 json 作为模型而不是 Map 接收。你最好创建一个新的模型类 - CartRequest 现在只有一个字段 -productname并在控制器中接受 taht 模型


@PostMapping("/cart")

public Cart create(@RequestBody CartRequest cartRequest){ 

  return cartRepository.save(new Cart(0, cartRequest.getProductname()));

}

如您所见,我并没有说要productid在模型中包含字段。这是因为你的实体在被 ORM 保存时必须没有 id(例如休眠)


查看完整回答
反对 回复 2022-07-06
  • 1 回答
  • 0 关注
  • 753 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号