Home > Mobile >  Asp.net Minimal API find by username(string)
Asp.net Minimal API find by username(string)

Time:04-20

I want to create endpoint which return the data by username(string).

Finding by id is working. It list the data with the given id.

app.MapGet("/store/{id}", async (StoreDb db, int id) => await db.Stores.FindAsync(id)).RequireAuthorization();

But using name(string) is not working.

app.MapGet("/store/{name}", async (StoreDb db, string name) => await db.Stores.FindAsync(name)).RequireAuthorization();

Schema :

Store{ id integer($int32) name string }

Json :

{ "id": 0, "name": "string" }

CodePudding user response:

It's not working because the method FindAsync tries to find your record using the id, you're only passing a different data in his parameter, what you should do is something like this

app.MapGet("/store/{name}", async (StoreDb db, string name) => await db.Stores.Where(s => s.name == name).FirstOrDefault()).RequireAuthorization();

But retrieving by name can generate some problems when there's redundant names so you should change FirstOrDefault() to ToListAsync() which is better for this case

app.MapGet("/store/{name}", async (StoreDb db, string name) => await db.Stores.Where(s => s.name == name).ToListAsync()).RequireAuthorization();
  • Related