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

83 Views Asked by At

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.

1

There are 1 best solutions below

0
Zhi Lv On BEST ANSWER

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.