Javascript 无法从React axios post接收Web API HttpPost方法中的数据

Javascript 无法从React axios post接收Web API HttpPost方法中的数据,javascript,reactjs,asp.net-web-api,asp.net-web-api2,Javascript,Reactjs,Asp.net Web Api,Asp.net Web Api2,我的Web API Post方法在Swagger中运行良好,但当我使用axios从React应用程序发送Post请求时,数据[FromBody]为空。 下面是WebAPI方法 [HttpPost] [Route("api/employee/addMany")] public IHttpActionResult Post([FromBody] dynamic data) //my axios request hit this method but data is always

我的Web API Post方法在Swagger中运行良好,但当我使用axios从React应用程序发送Post请求时,数据[FromBody]为空。 下面是WebAPI方法

[HttpPost]
[Route("api/employee/addMany")]
public IHttpActionResult Post([FromBody] dynamic data)  //my axios request hit this method but data is always null. I have tried passing without stringifying
  {
   Employee[] employees=JObject.Parse(data);
   //doing some stuff with employees
   return Ok();
  }

这是Axios post请求代码


export function addEmployees(employees:Employee[]) {
  return axios.post(`api/employee/addMany`, { employees });
}
这是请求拦截器,它执行模型密钥Pascalization和字符串化数据

const pascalizeKeys = (obj:any):any => {
  if (Array.isArray(obj)) {
    return obj.map(v => pascalizeKeys(v));
  } else if (obj !== null && obj.constructor === Object) {
    return Object.keys(obj).reduce(
      (result, key) => ({
        ...result,
        [String(upperFirst(key))]: pascalizeKeys(obj[key]),
      }),
      {},
    );
  }
  return obj;
};

export function applyInterceptors(Axios:typeof axios){
  Axios.interceptors.request.use((request)=>{
    if(request.data){
      request.data = JSON.stringify(pascalizeKeys(request.data));
      return request;
    }
    return request;
  }
  )
}


尝试让axios post工作的事项:

  • 设置标题
  • 尝试将json附加到请求的
    数据
    参数
    字段

  • 如果您仍然无法获取数据,请在数据字段中将其作为新的
    formData
    发送


  • 您现在应该可以通过请求获得它了

    我最近在axios和post上遇到了不少问题,这是一个臭名昭著的问题,请参见此处(还包含一些关于您可以尝试的建议)。您可以先将标题设置为“content type”:“application/json”,然后再尝试附加到数据或参数字段吗?祝您玩得开心,伙计:)您已经300岁了+
    headers: {
              'content-type': 'application/json',
         }
    
    let formData = new FormData()
    
    formdata.append('name', yourJson)
    
    await axios({
      method: 'post',
      url: '/your/url',
      data: formData,
      headers: {
        'Content-Type': 'multipart/form-data',
      },
    })