繁体   English   中英

将整数列表发送到 REST API 会抛出 415(不支持的媒体类型)

[英]Sending list of integers to REST API throws 415 (Unsupported Media Type)

I'm experimenting with reactjs and .net core web api, and I'm trying to send simple list of integer to the rest api. 通过 postman 我做到了没有任何问题,但是当我尝试从我的反应 js 代码中做到这一点时,我在控制台中收到 415 错误:

这就是我在 API 上的方法的外观:

   // DELETE api/SiteUsers/delete
   [HttpPost("delete")]
   public async Task<ActionResult> DeleteSiteUsers(DeleteValuesDto deleteValues, CancellationToken cancellationToken)
   {
            
        return NoContent();
   }

这是我的 DeleteValuesDto 的样子:

在此处输入图像描述

在前端我做了一个简单的方法,应该对 api 调用 rest api:

 const handleDelete = async () => {
    var deleteValues = {
      values: selectedRows,
    };
    await deleteSiteUser(deleteValues);
  };

这是我在前端的deleteSiteUser方法:

export const deleteSiteUser = (deleteValues) => {
  console.log('deleteValues', deleteValues);
  return axiosWrapper.request({
    url: `/SiteUsers/delete`,
    method: 'POST',
    deleteValues,
  });
};

以下是控制台日志的结果:

在此处输入图像描述

我以为这会很简单,但我发现实际上并非如此:/

您需要根据文档( https://github.com/axios/axios#request-config )在命名data属性中发送数据

export const deleteSiteUser = (deleteValues) => {
  console.log('deleteValues', deleteValues);
  return axiosWrapper.request({
    url: '/SiteUsers/delete',
    method: 'POST',
    data: deleteValues,
  });
};

如果您没有设置数据属性,则有效负载为空。 最可能的结果是,未设置Conent-Type header,因此 Asp.Net 无法决定如何解析请求正文,然后抛出该错误。 您可以在 Chrome 的开发人员控制台中检查,然后设置data属性并检查该请求的 Content-Type header。

您将 ID 包装在具有values字段的 object 中,但您的端点需要一个普通数组。

不要像使用deleteValues那样包装selectedRows ,而是直接传递它。

const handleDelete = async () => {
    await deleteSiteUser(selectedRows);
  };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM