You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 11中PUT请求返回400错误码问题求助

解决HTTP PUT请求返回400错误的问题

核心问题是调用reimbService.update()时传入的请求体格式错误。当前代码里this.currentReimb.col4status = 'Approved'是赋值操作,返回值是字符串'Approved',相当于给后端发送了纯字符串请求体,而非后端期望的JSON对象,这直接导致服务器返回400(请求格式无效)。

修复方案

1. 修正Component中的approve方法

需传入符合后端要求的JSON对象,而非单个字符串:

方案一:传入完整更新后的对象

approve(id: any){
    this.currentReimb = this.reimbs.find((reimb) => reimb.reimbId === id);
    if(this.currentReimb) {
      // 更新状态字段
      this.currentReimb.col4status = 'Approved';
      // 传入完整的Reimbursement对象
      this.reimbService.update(id, this.currentReimb).subscribe(res => {
        this.router.navigateByUrl('/reimbursements');
      })
    }
  }

方案二:仅传入修改的字段(后端需支持部分更新)

approve(id: any){
    if(this.reimbs.some(reimb => reimb.reimbId === id)) {
      // 仅传递需要更新的status字段
      this.reimbService.update(id, { col4status: 'Approved' }).subscribe(res => {
        this.router.navigateByUrl('/reimbursements');
      })
    }
  }

2. 确认Service方法的正确性

你的Service中update方法已正确设置Content-Type: application/json请求头,无需修改,只需确保this.reimbUrl指向正确的后端接口地址。

3. 匹配后端接口要求

确认后端PUT接口的请求体格式:

  • 若后端要求接收完整的Reimbursement对象,使用方案一
  • 若后端支持部分字段更新,使用方案二更高效

内容的提问来源于stack exchange,提问作者tjgray94

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 12:23:20