Services

A plataforma Devprime oferece um adaptador de Serviços que simplifica a conexão com APIs externas por meio de RPC, HTTP, gRPC, GraphQL e oferece suporte a estratégias automáticas para sistemas distribuídos, como Retry, Circuit-breaker e resiliência.

Esse exemplo de código demonstra como o Adapter de Services simplifica o acesso a API’s externas usando o comando Dp.Services.HTTP.DpGet permitindo acessar uma API de outro microsserviço baseado na plataforma Devprime e já trazer o retorno tipado.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
public override dynamic Handle(DeliveryGetOrder domainEvent)
{
    // Aggregate Root
    var delivery = domainEvent.Get<Domain.Aggregates.Delivery.Delivery>();

    // URL de acesso externo
    var url = $"https://localhost:5001/v1/order/{delivery.OrderID}";

    // Executando o request externo usando http e 
    // conversão automática em OrderCreated.
    var result = Dp.Services.HTTP.DpGet<OrderCreated>(url);

    // Analisando o resultado da consulta externa se retorno 200 ou 201
    if (result.Dp.Status.Equals(200) || result.Dp.Status.Equals(201))
        return result.Total; // Obtendo o resultado tipado
    else
        return null;
}

Adapter de Services e comandos relacionados Dp.Services.HTTP

O Adapter de Services na plataforma Devprime oferece uma série de comandos envolvendo Post, Get, Put, Delete, Download e implementações especializadas que incluem métodos iniciados com “Dp”, como o método DpGet. Além disso, esses métodos trazem comportamentos inteligentes, como uma classe de resultado baseada na interface DevPrime.Stack.Foundation.Application.IServicesResult.

Dp.Services.HTTP
Get Utilizando em url externas
Get(url) Informar a url como string
Get(url,connection) Informar a url como string e uma connection
Get(param) Incluir parâmetro HTTPParameter
Get<T>(url) Informar a url e uma classe para conversão automática em <T>
Get<T>(url,connection) Informar url, conexão e uma classe para conversão automática em <T>
Get<T>(param) Parâmetro HTTPParameter e uma classe para conversão automática em <T>
Resumo É possivel utilizar qualquer classe <T> no Get
DpGet Utilizado em url baseadas na Devprime
DpGet(url) Informar a url como string
DpGet(url,connection) Informar a url como string e uma connection
DpGet(param) Incluir parâmetro HTTPParameter
DpGet<T>(url) Informar a url e uma classe para conversão automática em <T>
DpGet<T>(url,connection) Informar url, conexão e uma classe para conversão automática em <T>
DpGet<T>(param) Parâmetro HTTPParameter e uma classe para conversão automática em <T>
Resumo A classe <T> usada no DpGet requer uma interface IServicesResult

Explorar exemplos de implementação:


Última modificação September 9, 2023 (8e6a790b)