Web

La plataforma Devprime proporciona un adaptador para la exposición de API y la implementación de exposición web a través de la API de ASP.NET/Razor/Minimal, con integración a mecanismos de seguridad, rendimiento y procesamiento inteligente mediante Devprime Pipeline.

La arquitectura de la plataforma Devprime adopta un enfoque que aísla las responsabilidades de cada capa tecnológica y las reglas de negocio. Esto simplifica el mantenimiento y la evolución de los servicios. En el caso de cada API, las solicitudes se dirigen al servicio de aplicaciones, que, a su vez, reenvía el procesamiento comercial al dominio (Core/Domain). Este marco ayuda a mantener una clara separación de las preocupaciones y facilita el desarrollo y mantenimiento de sistemas complejos.

Exposición de APi’s usando API mínima en el adaptador web

En el ejemplo que se presenta a continuación, tenemos la exposición de las API con las rutas implementadas en el Web Adapter. El flujo de negocio se entrega al servicio de aplicaciones, siguiendo los principios fundamentales de la arquitectura, que priorizan la capacidad de mantenimiento, la reutilización y la capacidad de prueba. Esto significa que la estructura del código está diseñada de manera que sea fácil de mantener a largo plazo, lo que permite el uso eficiente de los componentes en diferentes partes del sistema y la realización de pruebas de manera efectiva.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
namespace DevPrime.Web;
public class Order : Routes
{
    public override void Endpoints(WebApplication app)
    {
        //Automatically returns 404 when no result  
        app.MapGet("/v1/order", async (HttpContext http, 
        IOrderService Service, int? limit, int? offset, 
        string ordering, string ascdesc, string filter)
        => await Dp(http).Pipeline(() => Service.GetAll
        (new Application.Services.Order.Model.Order(limit, 
        offset, ordering, ascdesc, filter)), 404));
        
        //Automatically returns 404 when no result 
        app.MapGet("/v1/order/{id}", async (HttpContext http,
        IOrderService Service, Guid id) => await 
        Dp(http).Pipeline(() => Service.Get(
        new Application.Services.Order.Model.Order(id)), 404));
        
        app.MapPost("/v1/order", async (HttpContext http,
        IOrderService Service,DevPrime.Web.Models.Order.Order
        command) => await Dp(http).Pipeline(()
         => Service.Add(command.ToApplication())));

        app.MapPut("/v1/order", async (HttpContext http,
        IOrderService Service,
        Application.Services.Order.Model.Order command) => 
        await Dp(http).Pipeline(() => Service.Update(command)));
        
        app.MapDelete("/v1/order/{id}", async (HttpContext http,
        IOrderService Service, Guid id) => await 
        Dp(http).Pipeline(() => Service.Delete(
        new Application.Services.Order.Model.Order(id))));
    }
}

APIs expuestas automáticamente por Swagger"
Adaptador web Devprime


Última modificación January 10, 2024 (967dcac3)