# Client DDB .NET

Le client DDB Microservices .NET permet d'accéder à toutes les opérations DDB dans des langages tels que C #. Chaque microservice est accessible à l'aide d'un ensemble NUGET différent.

Remarque pour les utilisateurs externes - De nombreux liens de la section suivante se réfèrent aux applications internes. Veuillez parler à votre équipe de projet pour obtenir un soutien.

# Conditions préalables

# Installation

# nuget.config

Un fichier nuget.config est nécessaire pour installer les packages NuGet. Créez le fichier à côté de votre fichier .csproj ou .sln avec le contenu suivant:

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

# Paquets

Chaque microservice est fourni par un autre ensemble NuGet. Les packages peuvent être installés avec la commande:

dotnet add package <package name> --interactive

Les forfaits disponibles sont:

# Configuration

Vous aurez besoin d'un Enregistrement des applications Azure AD (opens new window) pour le client qui accéde à l'API. Vous devrez configurer des lunettes et un URI de redirection pour votre application.

# Portées

Les étendues sont configurées sur la page API permissions. Ceux-ci peuvent être ajoutés via Add a permission, puis en sélectionnant APIS my organization uses, et enfin en sélectionnant DigitalDesignBriefAPI. L'autorisation requise est user_impersonation. Une fois que vous les avez ajoutés, ils devront être approuvés avec Grant admin consent for Arup qui devra être enregistré dans un billet de service.

# Rediriger uri

Vous devrez également configurer un URI de redirection pour votre application. Cela se fait sur la page Authentication. Pour les applications de bureau, sélectionnez Add a platform, puis Mobile and desktop applications, et enfin sélectionnez https://login.microsoftonline.com/common/oauth2/nativeclient. Pour d'autres applications, suivez les instructions sur la page Authentication.

# Usage

L'objet DDBClient configure l'authentification et l'environnement pour chaque microservice. Chaque microservice installé peut ensuite être demandé en utilisant les méthodes d'extension du client. Une implémentation de l'acquisition de jetons est fournie pour les applications de bureau. D'autres applications, telles que des serveurs, devront mettre en œuvre leur propre acquisition de jetons en implémentant l'interface ITokenAcquisition. Cela peut ensuite être transmis au DDBClient ou DDBClientFactory dans le constructeur.

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

# Usine de clients

Une classe DDBClientFactory est également fournie, ce qui permet la création d'objets DDBClient pour un environnement donné, tandis que l'authentification est gérée par l'usine. Cela peut être utile dans les scénarios où l'injection de dépendance est utilisée.

# Pagination

Les fonctions d'assistance sont fournies pour travailler avec des points de terminaison paginés. Ceux-ci se trouvent dans la classe statique Helpers.

Les fonctions de l'assistance de pagination simplifient à plusieurs reprises un point de terminaison pour renvoyer une liste de résultats paginée. Un exemple de signature est:

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

requestFunction est une fonction qui passe le paramètre after à la fonction DDB, étant initialement passé nul.

getInner obtient la collection intérieure de la réponse du résultat.

getAfter obtient le curseur after de la réponse du résultat.

Par exemple:

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

# Helpers.Unpaginate

Ceci est disponible auprès de .NET Core 3.1 et il est recommandé de l'utiliser lorsqu'il est disponible, car il fera paresseusement chaque demande telle qu'elle est itérée, plutôt que d'avoir à récupérer tous les résultats en mémoire. Il renvoie un IAsyncEnumerable, et avec le System.Linq.Async (opens new window) Le package installé peut être utilisé avec des méthodes LINQ familières.

# Helpers.UnpaginateAll

Cela renvoie une seule liste d'objets en appelant à plusieurs reprises la méthode de demande fournie jusqu'à ce que tous les résultats aient été collectés. Cela ne doit généralement être utilisé que si Helpers.Unpaginate n'est pas disponible. Une surcharge est fournie qui prend une fonction de transformation supplémentaire, permettant de transformer les résultats au fur et à mesure qu'ils arrivent avant d'être ajoutés à la liste.

# Helpers.GetPaginatedFirstOrDefault

Cela renvoie un seul résultat d'un point de terminaison paginé. Il prend une fonction de prédicat et renvoie la première réponse qui correspond au prédicat.

Last Updated: 13/09/2023 15:19:15