如何解决API 按字符串获取
当单词与表字段匹配时,我需要从 db 获取所有数据。
我试过在 http 方向使用参数 (GetRutaByText),像这样
.../api/ruta/GetRutaByText/'var'
和
.../api/ruta/GetRutaByText/var
两者都返回空,不是错误,而是空。
我还尝试从正文发送“var”文本(GetRutaByText2)
相间
Task<IEnumerable<Ruta>> GetRutasByText(string value);
Task<IEnumerable<Ruta>> GetRutasByText2(Ruta ruta);
存储库:
public async Task<IEnumerable<Ruta>> GetRutasByText(string value)
{
var db = dbConnection();
var sql = @"select *
from public.tb_ruta
where descrip ilike '%@Value%'";
return await db.QueryAsync<Ruta>(sql,new { Value = value });
}
public async Task<IEnumerable<Ruta>> GetRutasByText2(Ruta ruta)
{
var db = dbConnection();
var sql = @"select *
from public.tb_ruta
where descrip ilike '%@descrip%'";
return await db.QueryAsync<Ruta>(sql,new { ruta.descrip });
}
控制器:
[HttpGet("{value}")]
public async Task<IActionResult> GetRutaByText(string value)
{
return Ok(await _rutaRepository.GetRutasByText(value));
}
[HttpGet]
public async Task<IActionResult> GetRutaByText2([FromBody] Ruta ruta)
{
return Ok(await _rutaRepository.GetRutasByText2(ruta));
}
这是邮递员测试的结果 1
解决方法
首先,您需要将 ilike
中的 like
更改为 sql
。然后您需要调试并检查您的操作是否有价值。这里是一个演示以获得api 中的值。
控制器:
[Route("api/[controller]")]
[ApiController]
public class RutaController : ControllerBase
{
[HttpGet("GetRutaByText/{value}")]
public async Task<IActionResult> GetRutaByText(string value)
{
return Ok(value);
}
}
最后但并非最不重要的是,您需要清楚 like
的用法。
...descrip like var
表示描述需要为 var
。
...descrip like var%
表示描述以 var
开头。
...descrip like %var
表示描述以 var
结尾。
...descrip like %var%
表示描述在任何位置都有 var
。
所以也许你的数据库没有 Ruta
的描述是 var
。
更新:
尝试使用
return await db.QueryAsync<Ruta>("select * from public.tb_ruta where descrip ilike %"+value+"%");
,
Yiyi You 提出的解决方法:
用法如下:
public async Task<IEnumerable<Ruta>> GetRutasByText(string value)
{
var db = dbConnection();
return await db.QueryAsync<Ruta>("select * from public.tb_ruta where descrip ilike '%" + value + "%'",new { Value = value });
}
代替:
public async Task<IEnumerable<Ruta>> GetRutasByText(string value)
{
var db = dbConnection();
var sql = @"select *
from public.tb_ruta
where descrip ilike '%@Value%'";
return await db.QueryAsync<Ruta>(sql,new { Value = value });
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。