Web API Overview

Esta capa presenta una dualidad entre capa de presentación y capa de aplicación. Contiene los controladores, es decir, las entidades encargadas de recibir y procesar todas las solicitudes Http que llegan, como pueden ser: GET, POST, PUT, DELETE.
Todos los controladores de la aplicación heredan de la clase ApplicationControllerBase y esta a su vez hereda de ControllerBase, e incluyen un conjunto de servicios comunes que serán usados dentro de los controladores, por ejemplo, el servicio de log que registra las acciones de los usuarios en la base de datos.
Cada función dentro del controlador de la API funciona como un endpoint y hace referencia a un recurso especifico dentro del sistema. Cada endpoint está asegurado con un permiso, y por ende cada recurso al que hace referencia también.
Estos permisos vienen codificados con una nomenclatura específica. Además, siguiendo el principio de una sola responsabilidad, cada recurso tiene un controlador. Cada función está asegurada por un mecanismo de autorización bastante granular, es decir que se aplican un número de permisos bastantes específicos a cada uno de los recursos.
Las rutas y contratos de la API se encuentran en la carpeta Common, ya que son ensamblados que tanto las aplicaciones clientes y el servidor web de servicios comparten entre sí.
La estructura de las solicitudes o request de API incluyen un mecanismo de autorización y 2 parámetros importantes:
|
[ClaimRequirement(CustomClaimTypes.Permission, "SIS-01-Divisiones-Ver")] [HttpGet(ApiRoutes.Divisions.GetAll)] public async Task<IActionResult> GetAll([FromQuery] FilterQuery filterQuery, [FromQuery] PaginationQuery paginationQuery, string IsLogEnabled) { |
|
|
En la primera línea se declara el permiso de acceso o autorización a esa solicitud. La solicitud se intercepta y se verifica si el usuario que está realizando la solicitud puede acceder a este recurso. |
|
|
FilterQuery |
Filtro que contiene varios parámetros como rango de fecha, usuario, y dos parámetros muy importantes que le dan flexibilidad a este filtro, se trata del Query Dinámico y Parámetros Query, los cuales permiten construir filtros con un número de parámetros que no están determinados. |
|
PaginationQuery |
Filtro con información relativa a la paginación, es decir que el conjunto de resultados que se solicitan a la API, se devuelve en pequeños grupos o páginas, con el objetivo de no afectar el rendimiento de la aplicación en caso de que la solicitud tenga una cantidad enorme de resultados. |
Una vez procesada la solicitud, la información de los resultados, a través del recurso de AutoMapper, es mapeada hacia un Objeto de Transferencia de Datos (DTO), el cual actúa como un contenedor de información que evita devolver innecesariamente a las aplicaciones clientes los objetos de dominio, resultando en una operación mejor encapsulada y segura. Finalmente, se obtiene una respuesta paginada que será consumida por la aplicación cliente que la solicite.
Created with the Personal Edition of HelpNDoc: Create help files for the Qt Help Framework