Estoy trabajando en un proyecto que es un proyecto de API web principal de Asp.net. La mayoría de mis proyectos los hice con Asp.net MVC y Core MVC, pero haría un nuevo proyecto basado en Core Web API. en Core MVC tenemos el concepto de Áreas de que podemos crear una parte de Áreas para administración, etc. Pero quiero saber ¿Podemos usar Áreas en los proyectos principales de API web de Asp.net? Si es así, ¿cómo puedo hacerlo? Si estás pensando en que hay una mejor manera, dímelo, por favor.
Puede colocar sus controladores API en un Área, solo para agruparlos. Pero básicamente proporciona la ruta en el controlador, por lo que puede crear diferentes rutas usted mismo:
[Route("api/myarea/v1/[controller]")]
Tengo el mismo problema que probé colocando mi ApiController debajo de mi área para que la estructura se vea como a continuación
Aquí está el controlador Api dentro
Áreas/GL/Controladores
[Area("GL")]
[Route("api/[controller]")]
[ApiController]
[HttpGet]
public IActionResult Get()
{
return Ok("api controller");
}
Pero cuando accedo a mi URL
http://hostlocal :48357/GL/Api/Get
O
http://hostlocal :48357/Api/GL/Get
o
http://localhost :48357/Api/Obtener
yo obtengo
Código de estado: 404; Extraviado
Aquí está el código en
Inicio.cs
routes.MapAreaRoute(
name: "AreaGL",
areaName: "GL",
template: "GL/{controller=Home}/{action=Index}/{id?}"
);
Por favor, ayúdenme con este problema, ¿qué estoy haciendo mal aquí?
Gracias por contactarnos, @farhadibehnam.
Para que los controladores estén en áreas, debe aplicar la restricción de ruta {area:exists}
en su ruta de atributos, como se describe en https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/areas? ver = aspnetcore-2.2.
Comentario más útil
Puede colocar sus controladores API en un Área, solo para agruparlos. Pero básicamente proporciona la ruta en el controlador, por lo que puede crear diferentes rutas usted mismo:
[Route("api/myarea/v1/[controller]")]