我想創建通過用戶名(字串)回傳資料的端點。
通過 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
}
杰森:
{
"id": 0,
"name": "string"
}
uj5u.com熱心網友回復:
它不起作用,因為 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();
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/461406.html
