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"
Última modificação September 2, 2023 (4c175713)