# Cliente DDB .NET

Il client DDB Microservices .NET consente l'accesso a tutte le operazioni DDB in linguaggi come C#. A ciascun microservizio si accede utilizzando un diverso pacchetto NuGet.

Nota per gli utenti esterni - Molti dei collegamenti nella sezione seguente si riferiscono alle applicazioni interne. Si prega di parlare con il tuo team di progetto per il supporto.

# Prerequisiti

# Installazione

# nuget.config

È necessario un file nuget.config per installare i pacchetti NuGet. Crea il file accanto al file .csproj o .sln con i seguenti contenuti:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="ddb" value="https://pkgs.dev.azure.com/ovearup/_packaging/ddb/nuget/v3/index.json" />
  </packageSources>
</configuration>

# Pacchetti

Ogni microservizio è fornito da un diverso pacchetto Nuget. I pacchetti possono essere installati con il comando:

dotnet add package <package name> --interactive

I pacchetti disponibili sono:

# Configurazione

Avrai bisogno di un Registrazione dell'app Azure AD (opens new window) per il cliente che accede all'API. Dovrai configurare gli ambiti e un URI di reindirizzamento per la tua applicazione.

# Scopi

Gli ambiti sono configurati sulla pagina API permissions. Questi possono essere aggiunti tramite Add a permission, quindi selezionando APIS my organization uses e infine selezionando DigitalDesignBriefAPI. L'autorizzazione richiesta è user_impersonation. Una volta aggiunti questi, dovranno essere approvati con Grant admin consent for Arup che dovrà essere registrato in un ticket di servizio.

# Reindirizza l'URI

Dovrai anche configurare un URI di reindirizzamento per l'applicazione. Questo viene fatto sulla pagina Authentication. Per le applicazioni desktop, selezionare Add a platform, quindi Mobile and desktop applications e infine selezionare https://login.microsoftonline.com/common/oauth2/nativeclient. Per altre applicazioni, seguire le istruzioni sulla pagina Authentication.

# Utilizzo

L'oggetto DDBClient configura l'autenticazione e l'ambiente per ciascun microservizio. Ogni microservizio installato può quindi essere richiesto utilizzando i metodi di estensione sul client. Un'implementazione dell'acquisizione di token è fornita per le applicazioni desktop. Altre applicazioni, come i server, dovranno implementare la propria acquisizione di token implementando l'interfaccia ITokenAcquisition. Questo può quindi essere passato a DDBClient o DDBClientFactory nel costruttore.

string clientId = "<client id>";
var ddbClient = new DDBClient(Environment.Sandbox, clientId);

var commentsService = ddbClient.GetCommentsService();

foreach (var comment in (await commentsService.GetCommentsAsync()).Comments)
{
    Console.WriteLine(comment.Content);
}

# Fabbrica di clienti

Viene inoltre fornita una classe DDBClientFactory, che consente la creazione di oggetti DDBClient per un determinato ambiente, mentre l'autenticazione viene gestita dalla fabbrica. Ciò può essere utile negli scenari in cui viene utilizzata l'iniezione di dipendenza.

# Impaginazione

Le funzioni di supporto sono fornite per lavorare con endpoint paginati. Questi si trovano nella classe statica Helpers.

Le funzioni di helper di impaginazione semplificano ripetutamente chiamando un endpoint per restituire un elenco paginato di risultati. Un esempio di firma è:

IAsyncEnumerable<O> Unpaginate<T, O>(RequestFunction<T> requestFunction, Func<T, IEnumerable<O>> getInner, Func<T, string> getAfter)

requestFunction è una funzione che passa il parametro after alla funzione DDB, inizialmente passata null.

getInner ottiene la raccolta interna dalla risposta del risultato.

getAfter ottiene il cursore after dalla risposta dei risultati.

Per esempio:

var results = Helpers.Unpaginate(
 after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),
 t => t.Parameters,
 t => t?.Paging?.Cursors?.After
);

# Helpers.Unpaginate

Questo è disponibile da .NET Core 3.1 e si consiglia di usarlo quando disponibile, poiché farà pigramente ogni richiesta in quanto è iterata, piuttosto che dover recuperare tutti i risultati in memoria. Restituisce un IAsyncEnumerable e con il System.linq.Async (opens new window) Il pacchetto installato può essere gestito con metodi LINQ familiari.

# Helpers.UnpaginateAll

Ciò restituisce un unico elenco di oggetti chiamando ripetutamente il metodo di richiesta fornito fino a quando non sono stati raccolti tutti i risultati. Questo dovrebbe essere generalmente usato solo se Helpers.Unpaginate non è disponibile. Viene fornito un sovraccarico che assume una funzione di trasformazione aggiuntiva, consentendo di trasformare i risultati mentre arrivano prima di essere aggiunti all'elenco.

# Helpers.GetPaginatedFirstOrDefault

Ciò restituisce un singolo risultato da un endpoint paginato. Prende una funzione predicata e restituisce la prima risposta che corrisponde al predicato.

Last Updated: 13/9/2023, 15:19:15