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

Spring Boot+Angular用PUT更新用户时遭遇415错误求助

解决PUT请求415 Unsupported Media Type错误

问题根源

  1. Angular HttpClient.put参数顺序错误:原代码将userId作为请求体传入,而非用户对象user,导致请求体为纯数字,浏览器自动设置Content-Type: text/plain,后端@RequestBody无法解析为User对象。
  2. 缺少正确的请求头配置:未显式指定Content-Type: application/json,且更新接口需JWT认证,未携带Authorization头(若后端配置了权限控制)。

修复步骤

1. 修正Angular UserService的updateUser方法

调整HttpClient.put的参数顺序,设置正确的请求头:

import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { UserAuthService } from './user-auth.service';

@Injectable({
  providedIn: 'root',
})
export class UserService {
  PATH_OF_API = 'http://localhost:9090';

  constructor(
    private httpclient: HttpClient,
    private userAuthService: UserAuthService
  ) {}

  public sign(signData){
    const requestHeader = new HttpHeaders({ 'No-Auth': 'True' });
    return this.httpclient.post(`${this.PATH_OF_API}/registerNewUser`, signData, { headers: requestHeader });
  }

  updateUser(userId: number, user: any) {
    // 获取JWT令牌(根据UserAuthService的实际方法调整)
    const authToken = this.userAuthService.getToken();
    
    // 配置请求头:指定JSON格式,携带认证令牌
    const requestHeaders = new HttpHeaders({
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${authToken}`
    });

    // 正确调用put方法:URL → 请求体(user) → 配置项
    return this.httpclient.put(
      `${this.PATH_OF_API}/UpdateUser/${userId}`,
      user,
      { headers: requestHeaders }
    );
  }
}

2. 关键说明

  • 参数顺序修正:HttpClient.put的第二个参数必须是请求体(即要更新的user对象),第三个参数是请求选项(含headers等),原代码颠倒了请求体和额外参数。
  • Content-Type设置:显式指定application/json,确保Angular发送JSON格式的请求体,后端能通过@RequestBody正确解析为User实例。
  • JWT认证头:若后端更新接口需权限验证,必须携带Authorization: Bearer {token}头,否则会触发401未授权错误(根据你的JWT Spring Security配置调整)。

3. 后端额外检查(可选)

确保User类具备正确的字段映射:

  • 字段名与前端传入的JSON键一致,或使用@JsonProperty注解指定映射关系。
  • 类中包含无参构造器、getter/setter方法,便于Spring MVC解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:01:16