# DDB .NET Client

De DDB Microservices .NETC -client biedt toegang tot alle DDB -bewerkingen in talen zoals C#. Elke microservice is toegankelijk met een ander NuGet -pakket.

Opmerking voor externe gebruikers - Veel van de links in de volgende sectie verwijzen naar interne toepassingen. Praat alstublieft met uw projectteam voor ondersteuning.

# Voorwaarden

# Installatie

# nuget.config

Een nuget.config -bestand is vereist om de NuGet -pakketten te installeren. Maak het bestand naast uw .csproj- of .sln -bestand met de volgende inhoud:

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

# Pakketjes

Elke microservice wordt geleverd door een ander NuGet -pakket. Pakketten kunnen worden geïnstalleerd met de opdracht:

dotnet add package <package name> --interactive

De beschikbare pakketten zijn:

# Configuratie

U hebt een Azure AD App -registratie (opens new window) voor de client die toegang heeft tot de API. U moet scopes en een omleidings -URI configureren voor uw toepassing.

# Klootzak

De scopes zijn geconfigureerd op de API permissions -pagina. Deze kunnen worden toegevoegd via Add a permission en vervolgens APIS my organization uses selecteren en uiteindelijk DigitalDesignBriefAPI selecteren. De vereiste toestemming is user_impersonation. Nadat u deze hebt toegevoegd, moeten ze worden goedgekeurd met Grant admin consent for Arup die in een serviceticket moet worden vastgelegd.

# Direct Uri omleiden

U moet ook een omleidings -URI voor uw toepassing configureren. Dit gebeurt op de Authentication -pagina. Selecteer voor desktoptoepassingen Add a platform, vervolgens Mobile and desktop applications, en selecteer ten slotte https://login.microsoftonline.com/common/oauth2/nativeclient. Volg voor andere toepassingen de instructies op de Authentication -pagina.

# Gebruik

Het DDBClient -object configureert de authenticatie en omgeving voor elke microservice. Elke geïnstalleerde microservice kan vervolgens worden aangevraagd met behulp van de extensiemethoden op de client. Een implementatie van de token -acquisitie wordt verstrekt voor desktoptoepassingen. Andere applicaties, zoals servers, moeten hun eigen tokenacquisitie implementeren door de ITokenAcquisition -interface te implementeren. Dit kan vervolgens worden doorgegeven aan de DDBClient of DDBClientFactory in de constructor.

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);
}

# Client Factory

Een DDBClientFactory -klasse wordt ook verstrekt, waardoor DDBClient objecten voor een bepaalde omgeving kunnen worden gecreëerd, terwijl authenticatie door de fabriek wordt afgehandeld. Dit kan nuttig zijn in scenario's waarbij afhankelijkheidsinjectie wordt gebruikt.

# Paginering

Helperfuncties worden geleverd voor het werken met gepagineerde eindpunten. Deze zijn te vinden in de Helpers statische klasse.

De Pagination Helper -functies vereenvoudigen herhaaldelijk een eindpunt om een gepagineerde lijst met resultaten te retourneren. Een voorbeeldhandtekening is:

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

requestFunction is een functie die de after -parameter doorgeeft aan de DDB -functie, die aanvankelijk nul wordt doorgegeven.

getInner haalt de innerlijke verzameling uit de resultaatrespons.

getAfter haalt de after cursor uit de resultaatrespons.

Bijvoorbeeld:

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

# Helpers.Unpaginate

Dit is verkrijgbaar bij .NET Core 3.1 en het wordt aanbevolen dat u dit gebruikt wanneer beschikbaar, omdat het lui elk verzoek zal doen zoals het wordt herhaald, in plaats van alle resultaten in het geheugen op te halen. Het retourneert een IAsyncEnumerable, en met de Systeem.linq.async (opens new window) geïnstalleerde pakket kan worden bediend met bekende LINQ -methoden.

# Helpers.UnpaginateAll

Dit retourneert een enkele lijst met objecten door herhaaldelijk de verstrekte aanvraagmethode aan te roepen totdat alle resultaten zijn verzameld. Dit moet over het algemeen alleen worden gebruikt als Helpers.Unpaginate niet beschikbaar is. Er wordt een overbelasting verstrekt die een extra transformatiefunctie nodig heeft, waardoor resultaten kunnen worden getransformeerd wanneer ze binnenkomen voordat ze aan de lijst worden toegevoegd.

# Helpers.GetPaginatedFirstOrDefault

Dit retourneert een enkel resultaat van een gepagineerd eindpunt. Het neemt een predicaatfunctie en retourneert de eerste reactie die overeenkomt met het predicaat.

Last Updated: 13-9-2023 15:19:15