将整数列表发送到 REST API 会引发 415(不支持的媒体类型)
Posted
技术标签:
【中文标题】将整数列表发送到 REST API 会引发 415(不支持的媒体类型)【英文标题】:Sending list of integers to REST API throws 415 (Unsupported Media Type) 【发布时间】:2021-05-04 09:15:36 【问题描述】:我正在尝试使用 reactjs 和 .net core web api,我正在尝试将简单的整数列表发送到其余 api。通过邮递员,我做到了没有任何问题,但是当我尝试从我的 react 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,
);
;
以下是控制台日志的结果:
我以为这会很简单,但我发现实际上并非如此:/
【问题讨论】:
您是否将其作为表单数据发布? @Marco No.. 我只是将其作为经典的帖子请求发送,而不是将其添加到表单中 我只能想象,这和你的axios请求有关。尝试根据文档将其设置为data
:axiosWrapper.request( url:
/SiteUsers/delete, method: 'POST', data: deleteValues, );
:github.com/axios/axios#request-config
@Marco 那是对的伙伴!我只是红了它!但感谢您的帮助。所以你可以写一个带有一点解释的答案,这样我就可以接受它!感谢您的帮助。
【参考方案1】:
您需要按照文档 (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
标头未设置,因此 Asp.Net 无法决定如何解析请求正文,然后抛出该错误。您可以在 Chrome 的开发者控制台中检查,然后设置 data
属性并检查该请求的 Content-Type 标头。
【讨论】:
【参考方案2】:您将 ID 包装在具有 values
字段的对象中,但您的端点需要一个普通数组。
不要像使用 deleteValues
那样包装 selectedRows
,而是直接传递它。
const handleDelete = async () =>
await deleteSiteUser(selectedRows);
;
【讨论】:
我的端点只需要一个 deleteValues,它是一个对象,而里面是一个数组?所以你推荐的这个改变也需要我修改 API 端点?对吗? 对不起,我误解了这个问题。但是,也许您需要将Values
大写?不过我不确定。
我尝试在前端和其他一些东西上大写“值”,但它不起作用,我不知道为什么:(以上是关于将整数列表发送到 REST API 会引发 415(不支持的媒体类型)的主要内容,如果未能解决你的问题,请参考以下文章
在颤动中使用 REST api 将列表数据发送到云 Firestore 时出错
Mandrill 通过 REST API 作为单独的消息发送给多个人
在 rest api 中发布请求时出现 415 错误,尝试运行 cms 查询