3

Je suis nouveau à asp.core, alors j'essaie de faire route valide pour {id}/visitsComment faire route valide pour {id}/visite?

Mon code:

[Produces("application/json")] 
[Route("/Users")] 
public class UserController 
{ 
    [HttpGet] 
    [Route("{id}/visits")] 
    public async Task<IActionResult> GetUser([FromRoute] long id) 
    { 
     throw new NotImplementedException() 
    } 
} 

Mais, à la route {id} méthode générée même:

// GET: /Users/5 
[HttpGet("{id}")] 
public async Task<IActionResult> GetUser([FromRoute] long id) 
{ 
    return Ok(user); 
} 

Comment faire route /Users/5/visits nethod?
Quels paramètres à GetUser devrais-je ajouter?

Répondre

4

Nom les méthodes différemment et utiliser des contraintes pour éviter les conflits d'itinéraire:

[Produces("application/json")] 
[RoutePrefix("Users")] // different attribute here and not starting /slash 
public class UserController 
{ 
    // Gets a specific user 
    [HttpGet] 
    [Route("{id:long}")] // Matches GET Users/5 
    public async Task<IActionResult> GetUser([FromRoute] long id) 
    { 
     // do what needs to be done 
    } 

    // Gets all visits from a specific user 
    [HttpGet] 
    [Route("{id:long}/visits")] // Matches GET Users/5/visits 
    public async Task<IActionResult> GetUserVisits([FromRoute] long id) // method name different 
    { 
     // do what needs to be done 
    } 
}