如何搜索除id以外的其他字段

问题描述 投票:3回答:1

我正在跟踪并实施以下项目的附带项目: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;
}
c# asp.net-web-api http-get
1个回答
2
投票
稍后,您应该在进行的调用中使用此值来检索要查找的实体。

_context.Maquinas.FirstOrDefaultAsync(maquina => maquina.Tag == id);

我在这里假设要过滤的属性称为Tag,其类型为字符串。这很有可能,至少该属性的名称不是该名称。因此,您必须相应地更改以上代码。

这将解决您的问题,但您应该

not认为这是最佳做法。您的API的语义将被破坏。我与上面分享的原因很明显,是向您显示参数id的名称与您传递的参数无关。没有任何检查会阻止您“通过”任何东西。我之所以写您的API的语义将被破坏的原因是,由于这将是REST api,因此有人会期望这样的端点:

api/Maquinas/1

用于获取ID为1的实体。
© www.soinside.com 2019 - 2024. All rights reserved.