# DDB .NET Klient

MicroServices DDB .NET Klient umożliwia dostęp do wszystkich operacji DDB w językach takich jak C#. Do każdej mikrousługów jest dostępny za pomocą innego pakietu Nuget.

Uwaga dla użytkowników zewnętrznych - Wiele linków w następnej sekcji patrz aplikacje wewnętrzne. Porozmawiaj ze swoim zespołem projektowym o wsparcie.

# Wymagania wstępne

# Instalacja

# nuget.config

Do zainstalowania pakietów NuGet Plik nuget.config jest wymagany. Utwórz plik obok swojego pliku .csproj lub .sln z następującą treścią:

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

# Pakiety

Każda mikrousług jest dostarczana przez inny pakiet Nuget. Pakiety można zainstalować za pomocą polecenia:

dotnet add package <package name> --interactive

Dostępne pakiety to:

# Konfiguracja

Będziesz potrzebować Rejestracja aplikacji Azure AD (opens new window) Dla klienta, który ma dostęp do interfejsu API. Będziesz musiał skonfigurować rozszczepienia i przekierowanie URI dla swojej aplikacji.

# Zakresy

Zakłady są skonfigurowane na stronie API permissions. Można je dodać przez Add a permission, a następnie wybór APIS my organization uses, a na koniec wybór DigitalDesignBriefAPI. Wymagane pozwolenie to user_impersonation. Po ich dodaniu będą musiały zostać zatwierdzone z Grant admin consent for Arup, które będą musiały zostać zarejestrowane w bilecie serwisowym.

# Przekieruj URI

Będziesz także musiał skonfigurować URI przekierowania dla swojej aplikacji. Odbywa się to na stronie Authentication. W przypadku aplikacji komputerowych wybierz Add a platform, a następnie Mobile and desktop applications i na koniec wybierz https://login.microsoftonline.com/common/oauth2/nativeclient. W przypadku innych aplikacji postępuj zgodnie z instrukcjami na stronie Authentication.

# Stosowanie

Obiekt DDBClient konfiguruje uwierzytelnianie i środowisko dla każdej mikrousług. Każdej zainstalowanej mikrousług można następnie żądać za pomocą metod rozszerzenia na kliencie. Wdrożenie akwizycji tokena jest przewidziane do aplikacji komputerowych. Inne aplikacje, takie jak serwery, będą musiały wdrożyć własne pozyskiwanie tokenów poprzez wdrożenie interfejsu ITokenAcquisition. Można to następnie przekazać do DDBClient lub DDBClientFactory w konstruktorze.

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

# Fabryka klientów

Zapewniono również klasę DDBClientFactory, która pozwala na tworzenie obiektów DDBClient dla danego środowiska, podczas gdy uwierzytelnianie jest obsługiwane przez fabrykę. Może to być przydatne w scenariuszach, w których stosuje się wstrzyknięcie zależności.

# Paginacja

Funkcje pomocnicze są dostarczane do pracy z pagowanymi punktami końcowymi. Są one znalezione w klasie statycznej Helpers.

Funkcje pomocnika paginacji upraszczają wielokrotnie wywołując punkt końcowy, aby zwrócić paginowaną listę wyników. Przykładową podpisem jest:

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

requestFunction jest funkcją, która przekazuje parametr after do funkcji DDB, początkowo przekazywany null.

getInner pobiera wewnętrzną kolekcję z odpowiedzi wyniku.

getAfter pobiera kursor after z odpowiedzi wyniku.

Na przykład:

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

# Helpers.Unpaginate

Jest to dostępne z .NET Core 3.1 i zaleca się, aby użyć go, gdy jest dostępny, ponieważ leniwie złoży każde żądanie w miarę jego iteracji, zamiast pobierać wszystkie wyniki w pamięci. Zwraca IAsyncEnumerable i z System.linq.async (opens new window) Zainstalowany pakiet może być obsługiwany ze znanymi metodami LINQ.

# Helpers.UnpaginateAll

Zwraca to pojedynczą listę obiektów poprzez wielokrotne wywołanie dostarczonej metody żądania, dopóki wszystkie wyniki nie zostaną zebrane. Powinno to być zasadniczo używane tylko wtedy, gdy Helpers.Unpaginate nie jest dostępny. Podano przeciążenie, które przyjmuje dodatkową funkcję transformacji, umożliwiając transformację wyników w miarę wprowadzania ich przed dodaniem do listy.

# Helpers.GetPaginatedFirstOrDefault

Zwraca to jeden wynik z pagnowanego punktu końcowego. Pobiera funkcję predykatu i zwraca pierwszą odpowiedź, która pasuje do predykatu.

Last Updated: 13.09.2023, 15:19:15