我正在跟踪并实施以下项目的附带项目:https://docs.microsoft.com/es-mx/aspnet/core/tutorials/first-web-api?view=aspnetcore-3.0&tabs=visual-studio
但是在调用[HttpGet("{id}")]
的部分中,它仅适用于id
字段,但是我想用其他字段代替id
来检索存储在DBmemory中的JSON;在这种情况下,我想按字段TAG
管理数据。我该怎么做?
我已经尝试将所有id
部分更改为TAG
,这是我要查找的字段,但是当我这样做时,post方法就会中断。
// GET: api/Maquinas/5
[HttpGet("{id}")]
public async Task<ActionResult<Maquina>> GetMaquina(string id)
{
// HERE. i need to find data with the field of "TAG" not "id"
var maquina = await _context.Maquinas.FindAsync(id);
if (maquina == null)
{
return NotFound();
}
return maquina;
}
_context.Maquinas.FirstOrDefaultAsync(maquina => maquina.Tag == id);
我在这里假设要过滤的属性称为Tag
,其类型为字符串。这很有可能,至少该属性的名称不是该名称。因此,您必须相应地更改以上代码。
这将解决您的问题,但您应该用于获取ID为1的实体。not认为这是最佳做法。您的API的语义将被破坏。我与上面分享的原因很明显,是向您显示参数id的名称与您传递的参数无关。没有任何检查会阻止您“通过”任何东西。我之所以写您的API的语义将被破坏的原因是,由于这将是REST api,因此有人会期望这样的端点:
api/Maquinas/1