【发布时间】:2022-11-07 17:45:42
【问题描述】:
我正在开发 .NET 6.0 Web API 应用程序。我需要将作为字符串列表集合的对象传递给 API,目的是返回数据。我可以使用HttpPost,但由于我设计此 API 的目的是为Get 记录,那么正确的方法是什么?
public class JobRoleDataView
{
public JobRoleDataView() { }
public List<string> Roles { get; set; }
}
该对象将很快获得更多属性,因此它不仅仅是列表...
[HttpGet("SearchRecord")]
public async Task<IActionResult> SearchRecord(JobRoleDataView JobRoles)
{
//remaining code
return Ok(returnResponse);
}
error
TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.
【问题讨论】:
-
我想说,您想违反 HTTP 原则,但恕我直言,唯一的解决方法是 cookie 存储。
-
只要该方法不会修改底层存储系统中的任何数据,我认为使用 HTTP GET 没有问题。我正在假设您传递的数据出于某种原因需要生成响应,但实际上不会用于更改数据库(或类似系统)中的任何数据。你能澄清为什么你认为这会是一个问题吗?
-
我收到错误类型错误:无法在“窗口”上执行“获取”:使用 GET/HEAD 方法的请求不能有正文。
-
您可以通过将分隔列表作为参数传递给 API 并使用将输入解析为列表的自定义 ModelBinder 来做您想做的事情: public async Task<IActionResult> SearchRecord( [ModelBinder(typeof(MyCustomDelimitedModelBinder))] List<string > 角色)
标签: c# .net-6.0 webapi http-get