# DDB .NET Client

Der DDB Microservices .NET Client ermöglicht den Zugriff auf alle DDB -Vorgänge in Sprachen wie C#. Auf jeden Microservice wird mit einem anderen Nuget -Paket zugegriffen.

Hinweis für externe Benutzer - Viele der Links im folgenden Abschnitt beziehen sich auf interne Anwendungen. Bitte sprechen Sie mit Ihrem Projektteam zur Unterstützung.

# Voraussetzungen

# Installation

# nuget.config

Eine nuget.config -Datei ist erforderlich, um die Nuget -Pakete zu installieren. Erstellen Sie die Datei neben Ihrer Datei .csproj oder .sln mit dem folgenden Inhalt:

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

# Pakete

Jeder Microservice wird durch ein anderes Nuget -Paket bereitgestellt. Pakete können mit dem Befehl installiert werden:

dotnet add package <package name> --interactive

Die verfügbaren Pakete sind:

# Aufbau

Sie brauchen eine Azure Ad App -Registrierung (opens new window) Für den Client, der auf die API zugreift. Sie müssen Bereiche und einen Umleitungs -URI für Ihre Anwendung konfigurieren.

# Bereiche

Die Scopes sind auf der Seite API permissions konfiguriert. Diese können durch Add a permission hinzugefügt werden, um APIS my organization uses zu wählen und schließlich DigitalDesignBriefAPI zu wählen. Die Erlaubnis ist user_impersonation. Sobald Sie diese hinzugefügt haben, müssen sie mit Grant admin consent for Arup genehmigt werden, um in einem Serviceticket angemeldet zu werden.

# Uri umleiten

Sie müssen auch einen Umleitungs -URI für Ihre Anwendung konfigurieren. Dies geschieht auf der Seite Authentication. Für Desktop -Anwendungen wählen Sie Add a platform, dann Mobile and desktop applications und schließlich https://login.microsoftonline.com/common/oauth2/nativeclient. Befolgen Sie für andere Anwendungen die Anweisungen auf der Seite Authentication.

# Verwendung

Das DDBClient -Objekt konfiguriert die Authentifizierung und Umgebung für jeden Mikroservice. Jeder installierte Microservice kann dann mit den Erweiterungsmethoden im Client angefordert werden. Für Desktop -Anwendungen wird eine Implementierung der Token -Akquisition vorgesehen. Andere Anwendungen wie Server müssen ihre eigene Token -Akquisition implementieren, indem die Schnittstelle ITokenAcquisition implementiert wird. Dies kann dann an DDBClient oder DDBClientFactory im Konstruktor übergeben werden.

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

# Kundenfabrik

Es wird auch eine DDBClientFactory -Klasse zur Verfügung gestellt, die die Erstellung von DDBClient -Objekten für eine bestimmte Umgebung ermöglicht, während die Authentifizierung von der Fabrik behandelt wird. Dies kann in Szenarien nützlich sein, in denen die Abhängigkeitsinjektion verwendet wird.

# Seitennummerierung

Helferfunktionen werden für die Arbeit mit paginierten Endpunkten geliefert. Diese sind in der statischen Klasse Helpers zu finden.

Die Pagination -Helferfunktionen vereinfachen wiederholt einen Endpunkt, um eine paginierte Liste von Ergebnissen zurückzugeben. Eine Beispielsignatur ist:

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

requestFunction ist eine Funktion, die den Parameter after an die DDB -Funktion übergibt und zunächst null übergeben wird.

getInner erhält die innere Sammlung aus der Ergebnisantwort.

getAfter erhält den after Cursor aus der Ergebnisantwort.

Zum Beispiel:

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

# Helpers.Unpaginate

Dies ist ab .NET Core 3.1 erhältlich und es wird empfohlen, dies zu verwenden, wenn verfügbar, da sie jede Anfrage faul stellt, wenn sie iteriert wird, anstatt alle Ergebnisse in den Speicher abzurufen. Es gibt ein IAsyncEnumerable und mit dem zurück System.linq.async (opens new window) Das installierte Paket kann mit bekannten LINQ -Methoden eingeschaltet werden.

# Helpers.UnpaginateAll

Dies gibt eine einzige Liste von Objekten zurück, indem die angegebene Anforderungsmethode wiederholt aufgerufen wird, bis alle Ergebnisse gesammelt wurden. Dies sollte im Allgemeinen nur verwendet werden, wenn Helpers.Unpaginate nicht verfügbar ist. Es wird eine Überladung bereitgestellt, die eine zusätzliche Transformationsfunktion erfordert und die Ergebnisse ermöglicht, die mit der Liste hinzugefügt zu werden.

# Helpers.GetPaginatedFirstOrDefault

Dies gibt ein einziges Ergebnis aus einem paginierten Endpunkt zurück. Es erfordert eine Prädikatfunktion und gibt die erste Antwort zurück, die dem Prädikat entspricht.

Last Updated: 13.9.2023, 15:19:15