Search code examples
c#.net.net-coreasp.net-core-webapiasp.net-routing

.net core web api Routing ex) 2depth /movies/inception/actors/DiCaprio/


web-api

This sample's routing is 1 depth

req: /movies/inception/actors/DiCaprio/

res: json DiCaprio birth, DiCaprio hair color etc....

you want to configure rest api server in 2depth.

/movies/{variable}/actors/{variable}/

/movies/{movie_name}/actors/{actor_name}/

What should I do?

Thank you for reading.


Solution

  • you want to configure rest api server in 2depth.

    /movies/{variable}/actors/{variable}/

    /movies/{movie_name}/actors/{actor_name}/

    What should I do?

    You can use the Route attribute or HTTP verb templates to configure the route template and set parameters.

    Code like this:

    [Route("api/[controller]")]
    [ApiController]
    public class MoviesController : ControllerBase
    {
        [HttpGet("/movies/{movie_name}/actors/{actor_name}/")]
        public IActionResult GetMovies(string movie_name, string actor_name)
        {
            return Ok($"Movies: {movie_name}, actor name: {actor_name}");  
        }
    }
    

    Or

    [Route("api/[controller]")]
    [ApiController]
    public class MoviesController : ControllerBase
    {
        [Route("/movies/{movie_name}/actors/{actor_name}/")]
        [HttpGet]
        //[HttpGet("/movies/{movie_name}/actors/{actor_name}/")]
        public IActionResult GetMovies(string movie_name, string actor_name)
        {
            return Ok($"Movies: {movie_name}, actor name: {actor_name}");  
        }
    }
    

    The result as below:

    enter image description here

    More detail information about routing, see Route templates and Attribute routing for REST APIs.