我在使用 Axios 请求访问后端方法时遇到问题。 不幸的是,我必须在后端和前端使用其他人预先制作的代码,并且我可以更改或重新编写的数量是有限的。
前端:
const response = await axiosConfig.put<IReserved>(
`my_url/${id}`,
null,
{
params: {
...body,
},
}
);
我检查了控制台日志,Id 和 Body 似乎都有正确的值。 据我了解,问题在于将它们传递到后端。
后端:
[HttpPut("{id}"), Authorize]
public async Task<ActionResult<BasicInfoResponse>> UpdateItem(int id, [FromQuery] Request request)
我连debug都调试不了,代码根本就没有进入这个方法。
提交的最终 URL(来自日志)如下所示:
https://localhost:7216/api/Items/592087867?Var1=900&Var2=592087867&Var3=&Var4=1&Var5=&Var6=&Var7=0882578014
此处的 Id 显示为 Var2。
问题可能是,后端想要 Id 和其他参数分开,并且 Id 优先,而这里的一切都“一团糟”? 另外,有些变量没有值,实际上我没有上传任何变量,因为它们应该是非强制性的,但也许这会导致问题?
到目前为止我尝试过的:
const response = await axiosConfig.put<IReserved>(
`my_url/${id}`,
null,
{
params: {
id,
...body,
},
}
);
const response = await axiosConfig.put<IReserved>(
`my_url/${id}`,
id,
{
params: {
...body,
},
}
);
从后端的 HttpPut("{id}") 或函数参数中删除“Id”。
[HttpPut, Authorize]
public async Task<ActionResult<BasicInfoResponse>> UpdateItem(int id, [FromQuery] Request request)
[HttpPut("{id}"), Authorize]
public async Task<ActionResult<BasicInfoResponse>> UpdateItem([FromQuery] Request request)
仅发送不带 Id 的所有参数,因为它已经出现在 url 中,或/并将其添加为参数之一。
const response = await axiosConfig.put<IReserved>(
`my_url`,
null
{
params: {
...body,
},
}
);
在所有情况下,我都会获得状态 400 或状态 405。
请帮忙,
叶夫根尼