如何搜索除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 的实体。
我正在关注并实施一个副项目: 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 的实体。