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

ASP.NET Core 8 Web API与React集成Postman请求400错误求助

问题原因分析

出现"album字段是必填项"的400错误,核心原因是请求体的JSON结构与后端模型绑定要求不匹配:

你的PostAlbum方法接受[FromBody] Album参数,意味着后端期望直接接收符合Album模型结构的JSON数据。但当前你(或前端)发送的请求体可能把Album对象嵌套在了一个名为album的根字段里,比如:

{
  "album": {
    "userId": 1,
    "title": "Test Album"
  }
}

这种情况下,模型绑定系统找不到与Album属性匹配的根字段,就会触发验证错误,提示"album字段必填"(这里的album是请求体里的根字段,而非数据库列)。

解决方案

1. 修正Postman请求体格式

直接发送符合Album模型结构的JSON,不要嵌套在album字段下:

{
  "userId": 1,
  "title": "My Test Album"
}

同时确保请求头的Content-Type设置为application/json。

2. 调整前端React请求代码

如果是前端发送的请求存在嵌套问题,修改请求体结构,直接传递Album对象:
比如使用axios的正确写法:

import axios from 'axios';

const createAlbum = async () => {
  const albumData = {
    userId: 1,
    title: 'My Test Album'
  };
  
  try {
    const response = await axios.post('/api/albums', albumData);
    console.log('Album created:', response.data);
  } catch (error) {
    console.error('Error creating album:', error);
  }
};

避免将数据包装在album键中。

3. 可选:通过DTO适配嵌套请求(不推荐,除非业务需要)

如果必须保留嵌套的请求结构,可以创建一个DTO类来接收请求:

namespace PhotoAlbums.Dtos
{
    public class AlbumCreateRequest
    {
        public Album Album { get; set; } = null!;
    }
}

然后修改控制器方法:

[HttpPost]
public async Task<ActionResult<Album>> PostAlbum([FromBody] AlbumCreateRequest request)
{
    _context.Albums.Add(request.Album);
    await _context.SaveChangesAsync();

    return CreatedAtAction(nameof(PostAlbum), new { id = request.Album.Id }, request.Album);
}

这种方式适合需要兼容现有前端请求结构的场景,但更推荐优先调整请求格式以匹配模型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 04:41:14