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
相关产品推荐
相关产品推荐

