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

为什么ASP.NET Core 6 MVC路由处理程序无法接收Axios POST请求的数据?

问题原因

Axios 发送 POST 请求时默认会将第二个参数的对象序列化为 JSON 字符串,请求头Content-Type为application/json。而 ASP.NET Core Minimal API 对未指定绑定来源的简单类型参数(如int? id),默认会从路由、查询字符串、表单数据中取值,不会解析 JSON 请求体,因此拿到的是 null。你用 Postman 能正常取值大概率是用了表单传参或者查询字符串传参,符合后端默认的绑定规则。

修复方案

可以任选以下一种方案修复:

方案1:修改后端参数绑定(推荐,符合前后端分离项目JSON传参的常规实践)

首先创建一个接收参数的DTO类:

public class PlantsInfoRequest
{
    public int? Id { get; set; }
}

然后修改接口代码,给参数加[FromBody]特性绑定到请求体的JSON:

app.MapPost("/PlantsInfo", ([FromServices] DastShafaContext context, [FromBody] PlantsInfoRequest request) =>
 {
     var id = request.Id;
     // 原有依据id执行数据库交互的逻辑
 }

方案2:修改前端请求格式,适配后端默认绑定规则

如果不想修改后端代码,也可以调整前端传参方式,让参数走表单或查询字符串传递:

方式2.1 用URLSearchParams传递表单格式参数

import axios from "axios"

export async function getList(val) {
    const formData = new URLSearchParams();
    formData.append('id', val);
    return await axios.post('http://localhost:5107/PlantsInfo', formData).then(({ data }) => {
        return data;
    });
}

方式2.2 将id放到查询字符串传递

import axios from "axios"

export async function getList(val) {
    return await axios.post('http://localhost:5107/PlantsInfo', null, {
        params: { id: val }
    }).then(({ data }) => {
        return data;
    });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:45:04