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

.NET Core 搭配 React 项目GET请求正常,POST请求返回404求助

老兄,我太懂这种POST请求卡404急得抓耳挠腮的感觉了!结合你用的.NET Core + React技术栈,GET正常但POST找不到接口,咱们一步步拆解排查:

排查步骤 & 解决方案

1. 先盯紧后端的路由配置(最容易踩坑的点)

GET正常说明基础路由没问题,但POST的路由匹配可能漏了关键配置:

  • 确认你的WorkingTimeController上有没有正确的路由属性,比如:
    [Route("api/[controller]")]
    [ApiController]
    public class WorkingTimeController : ControllerBase
    {
        // 重点!这里必须加[HttpPost],还要确保路由后缀和前端一致
        [HttpPost("SaveWorkingTime")]
        public IActionResult SaveWorkingTime([FromBody] WorkingTimeRequestModel model)
        {
            // 你的业务逻辑
            return Ok();
        }
    }
    
  • 检查控制器名是不是WorkingTimeController(后缀必须是Controller),这样基础路由才是api/WorkingTime,加上方法的SaveWorkingTime,完整路径才是api/WorkingTime/SaveWorkingTime,和你前端的请求路径完全对应。

2. 前端请求的细节要抠到位

  • 路径解析问题:React的相对路径可能因为部署环境或者项目配置出现偏差,你可以先把请求路径改成绝对路径测试:
    superagent.post(`${window.location.origin}/api/WorkingTime/SaveWorkingTime`)
    
  • 参数大小写一致:.NET Core的模型绑定是大小写敏感的!前端传的Comment、Date、Time要和后端模型的属性名完全匹配,别写成小写的comment之类的。
  • 请求头补全:你只设置了Accept,最好加上Content-Type确保后端能识别JSON格式:
    .set('Accept', 'application/json')
    .set('Content-Type', 'application/json')
    

3. CORS配置别遗漏POST方法

虽然GET正常,但有些时候CORS配置可能只开放了GET,没包含POST:

  • 如果你用的是.NET 6+,检查Program.cs里的CORS配置:
    builder.Services.AddCors(options =>
    {
        options.AddPolicy("AllowReact", policy =>
        {
            policy.WithOrigins("http://localhost:3000") // 你的React运行地址
                  .AllowAnyHeader()
                  .AllowAnyMethod(); // 要么允许所有方法,要么明确写AllowMethods("GET", "POST")
        });
    });
    
    // 注意这个中间件的位置:要放在UseRouting之后,UseAuthorization之前
    app.UseCors("AllowReact");
    

4. 后端模型绑定要加[FromBody]

如果你的接口方法没有给参数加[FromBody],.NET Core会默认从URL解析参数,根本找不到POST的JSON数据,甚至直接返回404:

// 必须加[FromBody]才能正确接收前端的JSON payload
public IActionResult SaveWorkingTime([FromBody] WorkingTimeRequestModel model)

另外,确认你的模型属性类型和前端传的一致,比如前端传的Date是字符串格式,后端要确保能解析(或者把模型的Date属性改成string再转换)。

5. 用工具快速定位问题

  • 打开浏览器F12的Network标签,查看POST请求的Request URL是不是正确,Request Payload是不是合法的JSON,Response里有没有更详细的错误信息。
  • 用Postman直接调用后端接口http://localhost:xxxx/api/WorkingTime/SaveWorkingTime(替换成你的后端端口):如果Postman也返回404,那问题肯定在后端路由;如果Postman能成功,那就是前端的请求路径或参数问题。

先把后端接口用Postman测通,再调前端,这样能快速缩小问题范围!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:41:08