问题描述
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 Class 这会将数据绑定到原始类型。因此,您将需要 3 个单独的参数。如果你想绑定到一个对象,你需要创建一个自定义的 ModelBinder。
Microsoft 的这份文档详细介绍了在 ASP.Net core/5 API 中尝试绑定数据时的选项Binding source parameter inference