# DDB .NET klient

DDB -mikroservices .NET klient giver adgang til alle DDB -operationer på sprog som C#. Hver mikroservice er tilgængelig ved hjælp af en anden Nuget -pakke.

Bemærk til eksterne brugere - Mange af linkene i det følgende afsnit henviser til interne applikationer. Tal venligst til dit projektteam for support.

# Forudsætninger

# Installation

# nuget.config

En nuget.config -fil er påkrævet for at installere Nuget -pakkerne. Opret filen ved siden af din .csproj eller .sln fil med følgende indhold:

<?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>

# Pakker

Hver mikroservice leveres af en anden Nuget -pakke. Pakker kan installeres med kommandoen:

dotnet add package <package name> --interactive

De tilgængelige pakker er:

# Konfiguration

Du har brug for en Azure Ad App -registrering (opens new window) For den klient, der får adgang til API. Du bliver nødt til at konfigurere scopes og en omdirigering URI til din ansøgning.

# Omfang

Scopes er konfigureret på API permissions -siden. Disse kan tilføjes via Add a permission, derefter vælge APIS my organization uses og til sidst vælge DigitalDesignBriefAPI. Den krævede tilladelse er user_impersonation. Når du har tilføjet disse, skal de godkendes med Grant admin consent for Arup, som skal logges i en servicebillet.

# Omdirigere URI

Du bliver også nødt til at konfigurere en omdirigering URI til din ansøgning. Dette gøres på Authentication -siden. For desktop -applikationer skal du vælge Add a platform, derefter Mobile and desktop applications, og til sidst vælge https://login.microsoftonline.com/common/oauth2/nativeclient. For andre applikationer skal du følge instruktionerne på Authentication -siden.

# Brug

DDBClient -objektet konfigurerer godkendelsen og miljøet for hver mikroservice. Hver installeret mikroservice kan derefter anmodes om ved hjælp af udvidelsesmetoderne på klienten. En implementering af Token -erhvervelsen leveres til desktop -applikationer. Andre applikationer, såsom servere, bliver nødt til at implementere deres egen token -erhvervelse ved at implementere ITokenAcquisition interface. Dette kan derefter overføres til DDBClient eller DDBClientFactory i konstruktøren.

string clientId = "";
var ddbClient = new DDBClient(Environment.Sandbox, clientId);


var commentsService = ddbClient.GetCommentsService();


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

# Klientfabrik

En DDBClientFactory -klasse leveres også, som tillader oprettelse af DDBClient objekter til et givet miljø, mens godkendelse håndteres af fabrikken. Dette kan være nyttigt i scenarier, hvor der bruges afhængighedsinjektion.

# Pagination

Hjælperfunktioner leveres til at arbejde med paginerede slutpunkter. Disse findes i Helpers statisk klasse.

Paginationshjælperfunktionerne forenkler gentagne gange at kalde et slutpunkt for at returnere en pagineret liste over resultater. Et eksempel på signatur er:

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

requestFunction er en funktion, der passerer parameteren after til DDB -funktionen, der oprindeligt blev sendt null.

getInner får den indre samling fra resultatets respons.

getAfter får after markøren fra resultatets respons.

For eksempel:

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

# Helpers.Unpaginate

Dette er tilgængeligt fra .NET Core 3.1, og det anbefales, at du bruger dette, når det er tilgængeligt, da det doven gør hver anmodning, da den er itereret, snarere end at skulle hente alle resultaterne i hukommelsen. Det returnerer en IAsyncEnumerable og med System.linq.async (opens new window) Installeret pakke kan betjenes på med velkendte LINQ -metoder.

# Helpers.UnpaginateAll

Dette returnerer en enkelt liste over objekter ved gentagne gange at kalde den angivne anmodningsmetode, indtil alle resultater er blevet indsamlet. Dette bør generelt kun bruges, hvis Helpers.Unpaginate ikke er tilgængelig. Der tilvejebringes en overbelastning, der tager en yderligere transformationsfunktion, hvilket gør det muligt at transformere resultater, når de kommer ind, før de føjes til listen.

# Helpers.GetPaginatedFirstOrDefault

Dette returnerer et enkelt resultat fra et pagineret slutpunkt. Det tager en predikatfunktion og returnerer det første svar, der matcher predikatet.

Last Updated: 13.9.2023 15.19.15