Estou trabalhando em um projeto que é um projeto de API web core Asp.net. A maioria dos meus projetos eu fiz por Asp.net MVC e Core MVC, mas eu faria um novo projeto baseado em Core Web API. no Core MVC temos o conceito de Áreas que podemos criar uma parte de Áreas para Admin, etc.... Se sim como posso fazer? Se você está pensando que há uma maneira melhor, diga-me, por favor.
Você pode colocar seus controladores de API em uma área, apenas para agrupá-los. Mas basicamente você fornece a rota no controlador, para que você possa criar rotas diferentes:
[Route("api/myarea/v1/[controller]")]
Eu tenho o mesmo problema que tentei colocando meu ApiController na minha área para que a estrutura ficasse como abaixo
Aqui está o controlador Api dentro
Áreas/GL/Controladores
[Area("GL")]
[Route("api/[controller]")]
[ApiController]
[HttpGet]
public IActionResult Get()
{
return Ok("api controller");
}
Mas quando eu acesso minha URL
http://localhost :48357/GL/Api/Get
Ou
http://localhost :48357/Api/GL/Get
ou
http://localhost :48357/Api/Get
eu recebo
Código de status: 404; Não encontrado
Aqui está o código em
Startup.cs
routes.MapAreaRoute(
name: "AreaGL",
areaName: "GL",
template: "GL/{controller=Home}/{action=Index}/{id?}"
);
Por favor me ajudem nesta questão, o que estou fazendo de errado aqui?
Obrigado por entrar em contato conosco, @farhadibehnam.
Para que os controladores estejam em áreas, você deve aplicar a restrição de rota {area:exists}
em sua rota de atributo, conforme descrito https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/areas? view=aspnetcore-2.2.
Comentários muito úteis
Você pode colocar seus controladores de API em uma área, apenas para agrupá-los. Mas basicamente você fornece a rota no controlador, para que você possa criar rotas diferentes:
[Route("api/myarea/v1/[controller]")]