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

how to search other field than id

我正在关注并实施一个副项目: https://docs.microsoft.com/es-mx/aspnet/core/tutorials/first-web-api?view=aspnetcore-3.0&tabs=visual-studio

但是在调用[HttpGet("{id}")]的部分,它只适用于id字段,但我想检索存储在DBmemory中的JSON,而不是其他字段id;在这种情况下,我想按字段 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;
}

不要拘泥于名为 id 的事实。您可以使用此端点而不是传递 id 的值来传递标签的值 api/Maquinas/tagvalue。

稍后您应该在调用中使用此值来检索您要查找的实体。

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

我在这里假设您要过滤的 属性 称为 Tag 并且它的类型是字符串。很有可能,至少 属性 的名称不是这个。所以你必须相应地更改上面的代码。

这将解决您的问题,但您不应将此视为最佳做法。您的 API 的语义将被破坏。我分享以上内容的真正原因是向您展示参数 id 的名称与您传递的名称无关。没有任何检查会阻止您通过那里 "anything"。我写你的 API 的语义会被破坏的原因是因为这将是一个 REST api,有人会期望像下面这样的端点:

api/Maquinas/1

用于获取 ID 为 1 的实体。