Asp.net 最小 API 按用户名(字符串)查找
Asp.net Minimal API find by username(string)
我想创建 return 通过用户名(字符串)传输数据的端点。
按 ID 查找有效。它列出了具有给定 ID 的数据。
app.MapGet("/store/{id}", async (StoreDb db, int id) => await db.Stores.FindAsync(id))
.RequireAuthorization();
但是使用 name(string) 不起作用。
app.MapGet("/store/{name}", async (StoreDb db, string name) => await db.Stores.FindAsync(name))
.RequireAuthorization();
架构:
Store {
id integer($int32)
name string
}
Json :
{
"id": 0,
"name": "string"
}
它不起作用,因为 FindAsync 方法试图使用 id 查找您的记录,您只是在他的参数中传递不同的数据,您应该做的是这样的
app.MapGet("/store/{name}", async (StoreDb db, string name) => await db.Stores.Where(s => s.name == name).FirstOrDefault()).RequireAuthorization();
但是当有冗余名称时,按名称检索会产生一些问题,因此您应该将 FirstOrDefault()
更改为 ToListAsync()
,这更适合这种情况
app.MapGet("/store/{name}", async (StoreDb db, string name) => await db.Stores.Where(s => s.name == name).ToListAsync()).RequireAuthorization();
我想创建 return 通过用户名(字符串)传输数据的端点。
按 ID 查找有效。它列出了具有给定 ID 的数据。
app.MapGet("/store/{id}", async (StoreDb db, int id) => await db.Stores.FindAsync(id))
.RequireAuthorization();
但是使用 name(string) 不起作用。
app.MapGet("/store/{name}", async (StoreDb db, string name) => await db.Stores.FindAsync(name))
.RequireAuthorization();
架构:
Store {
id integer($int32)
name string
}
Json :
{
"id": 0,
"name": "string"
}
它不起作用,因为 FindAsync 方法试图使用 id 查找您的记录,您只是在他的参数中传递不同的数据,您应该做的是这样的
app.MapGet("/store/{name}", async (StoreDb db, string name) => await db.Stores.Where(s => s.name == name).FirstOrDefault()).RequireAuthorization();
但是当有冗余名称时,按名称检索会产生一些问题,因此您应该将 FirstOrDefault()
更改为 ToListAsync()
,这更适合这种情况
app.MapGet("/store/{name}", async (StoreDb db, string name) => await db.Stores.Where(s => s.name == name).ToListAsync()).RequireAuthorization();