c# - 使用带有 content(body) 或多个参数的 restful API get 方法
问题描述
这是我的 API 方法,它从正文中获取 3 个参数
public async Task<IEnumerable<EnCurso>> GetIdCondByDTRuta(EnCurso encurso)
{
var db = dbConnection();
return await db.QueryAsync<EnCurso>("select * from public.tb_encurso where to_timestamp('" + encurso.inicio+ "','DD/MM/YYYY HH24:MI:SS') between inicio AND fin and idruta = " + encurso.idruta+ " and idbus = "+ encurso.idbus + " and estado=true;", new { encurso.inicio, encurso.idruta, encurso.idbus });
}
[HttpGet("GetIdCondByDTRuta")]
public async Task<IActionResult> GetIdCondByDTRuta([FromBody] EnCurso encurso)
{
return Ok(await _encursoRepository.GetIdCondByDTRuta(encurso));
}
但后来我不知道如何从使用 API 的应用程序发送内容。我尝试在 URI 中添加参数,像这样
var _URI = "http://XXX.XXX.0.XX:4XXX8/api/encurso/GetIdCondByDTRuta.json?inicio:" + encurso.inicio + "&idruta:" + encurso.idruta + "&idbus:" + encurso.idbus;
HttpResponseMessage result = await client.GetAsync(_URI);
不工作。我尝试像帖子一样搜索采用 Uri 和内容的 httpclient 方法,但 GET 方法没有选项
解决方案
HTTP Get 方法不应包含此线程中引用的主体:HTTP GET with request body。
创建 Get API 方法时,最好使用 [FromQuery]- FromQueryAttribute 类,这会将数据绑定到原始类型。因此,您将需要 3 个单独的参数。如果要绑定到对象,则需要创建自定义 ModelBinder。
Microsoft 的此文档在尝试在 ASP.Net core/5 API Binding 源参数推断中绑定数据时介绍了您的选项
推荐阅读
- python - How do I format a Python list as an initialized C array?
- python - 区分句子是肯定的还是否定的
- android - 较低 api 设备上的 Webview 行为更改 API 28
- python - Mapping item in a list to a list of lists
- python - Unable to remove leading space from result of passing URL with BeautifulSoup
- java - 向 Google Admin Directory API 进行身份验证
- go - 制作切片大小
- python - `ImportError: No module named AppKit` 安装 AppKit 和 PyObjC 后
- matlab - 将多个概率图(使用 Matlab 中的 probplot )组合在一个图中,用于不同大小的数组
- sql-server - 在作业 SQL Server 中运行时 SSIS 失败