Web

A plataforma Devprime oferece um adaptador para a exposição de APIs e a implementação de exposição na Web por meio do ASP.NET / Razor / Minimal API, com integração aos mecanismos de segurança, desempenho e processamento inteligente usando Devprime Pipeline.

A arquitetura da plataforma Devprime adota uma abordagem que isola as responsabilidades de cada camada tecnológica e das regras de negócio. Isso simplifica a manutenção e evolução dos serviços. No caso de cada API, as requisições são direcionadas para o Serviço de Aplicação, que, por sua vez, encaminha o processamento de negócios para o domínio (Core/Domain). Essa estrutura ajuda a manter uma clara separação de preocupações e facilita o desenvolvimento e a manutenção de sistemas complexos.

Exposição de APi’s usando Minimal API no Adapter Web

No exemplo apresentado abaixo, temos a exposição de APIs com as rotas implementadas no Adapter Web. O fluxo de negócios é entregue ao serviço de aplicação, seguindo os princípios fundamentais da arquitetura, que priorizam a manutenabilidade, o reuso e a testabilidade. Isso significa que a estrutura do código está projetada de maneira a facilitar a manutenção no longo prazo, permitindo o uso eficiente de componentes em diferentes partes do sistema e a realização de testes de forma eficaz.

 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 expostas automaticamente pelo Swagger"
Devprime Web Adapter


Última modificação September 2, 2023 (4c175713)