0

Ich würde gerne wissen, wie Routen im Punktnetzkern angeben. Zum Beispiel habe ich eine get-Methode, die 1 Argument (ID) erhält und Benutzer zurückgibt. Diese Methode ist über diesen Link verfügbar (api/user/1). Also, die Frage ist, wie man eine Methode zu diesem Link - "api/user/1/profile", so dass es ID bekommen und etwas für diese ID relevant zurückgibt. Ist es notwendig, 2 Methoden zu erstellen oder sie einfach zu trennen und Routen anzugeben?ASP dot net core

+0

Bitte ändern Sie Ihren Titel auf etwas mehr auf die Frage –

Antwort

2

Mithilfe von attributbasiertem Routing kann dies wie folgt durchgeführt werden.

[HttpGet("{id:int}")] 
public async Task<IActionResult> GetUserById(int id) {} 

[HttpGet("{id:int}/profile")] 
public async Task<IActionResult> GetUserProfileById(int id) {} 

Weitere Informationen zum Routing finden Sie unter diesem Link.

https://docs.asp.net/en/latest/fundamentals/routing.html

0

Wenn Sie nicht die Standardroute von geändert haben:

app.UseMvc(routes => 
{ 
    routes.MapRoute(
     name: "default", 
     template: "{controller=Home}/{action=Index}/{id?}"); 
}); 

könnten Sie einen Benutzer Controller mit so etwas wie erstellen:

public async Task<IActionResult> Profile(int? id) 
{ 
    if (id == null) 
    { 
     // Get the id 
    } 

    var profile = await _context.Profile 
     .SingleOrDefaultAsync(m => m.Id == id); 
    if (profile == null) 
    { 
     return NotFound(); 
    } 

    return View(profile); 
} 

Dann wäre es zugeordnet zu "/ Benutzer/Profil/{id}"

Natürlich können Sie die Daten für das Profil erhalten, wie Sie es wünschen, ich habe nur ein EFCore-Beispiel verwendet.

Verwandte Themen