# DDB .NET Клиент

Клиент DDB Microservices .NET позволяет доступ ко всем операциям DDB на таких языках, как C#.

Доступ к каждому микросервису с использованием различного пакета Nuget.

Примечание для внешних пользователей - Многие из ссылок в следующем разделе относятся к внутренним приложениям. Пожалуйста, поговорите с командой проекта для поддержки.

# Предварительные условия

# Монтаж

# nuget.config

Файл nuget.config необходим для установки пакетов Nuget. Создайте файл рядом с вашим файлом .csproj или .sln со следующим содержанием:

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

# Пакеты

Каждый микросервис обеспечивается различным пакетом Nuget. Пакеты могут быть установлены с помощью команды:

dotnet add package <package name> --interactive

Доступные пакеты:

# Конфигурация

Вам понадобится Azure Ad Registration (opens new window) Для клиента, который обращается к API. Вам нужно будет настроить применение и перенаправить URI для вашего приложения.

# Прицелы

Области настроены на странице API permissions. Они могут быть добавлены через Add a permission, а затем выбрать APIS my organization uses и, наконец, выбрать DigitalDesignBriefAPI. Требуемое разрешение - user_impersonation. После того, как вы добавите их, их нужно будет одобрено с помощью Grant admin consent for Arup, который должен быть зарегистрирован в сервисном билете.

# Перенаправить Uri

Вам также нужно будет настроить URI перенаправления для вашего приложения. Это делается на странице Authentication. Для настольных приложений выберите Add a platform, затем Mobile and desktop applications и, наконец, выберите https://login.microsoftonline.com/common/oauth2/nativeclient. Для других приложений следуйте инструкциям на странице Authentication.

# Применение

Объект DDBClient настраивает аутентификацию и среду для каждого микросервиса. Каждое установленное микросервис может быть запрошено с помощью методов расширения на клиенте. Реализация приобретения токена предоставляется для настольных приложений. Другие приложения, такие как серверы, должны будут реализовать свое собственное приобретение токенов, внедрив интерфейс ITokenAcquisition. Затем это можно передать в DDBClient или DDBClientFactory в конструкторе.

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

# Клиентский фабрика

Также предоставляется класс DDBClientFactory, который позволяет создавать объекты DDBClient для данной среды, в то время как аутентификация обрабатывается фабрикой. Это может быть полезно в сценариях, где используется инъекция зависимости.

# Страница

Помощные функции поставляются для работы с лицензированными конечными точками. Они найдены в статическом классе Helpers.

Функции Helper Pagination неоднократно упрощают, вызывая конечную точку, чтобы вернуть лицензированный список результатов. Пример подписи:


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

requestFunction - это функция, которая передает параметр after функции DDB, первоначально передается нулевым.

getInner Получает внутреннюю коллекцию из ответа на результат.

getAfter Получает курсор after от ответа на результат.

Например:


var results = Helpers.Unpaginate(

 after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),

 t => t.Parameters,

 t => t?.Paging?.Cursors?.After

);

# Helpers.Unpaginate

Это доступно от .NET Core 3.1, и рекомендуется использовать это, когда он будет доступен, так как он лениво сделает каждый запрос, поскольку он итерат, а не для получения всех результатов в память. Он возвращает IAsyncEnumerable и с System.linq.async (opens new window) Установленная упаковка может работать со знакомыми методами LINQ.

# Helpers.UnpaginateAll

Это возвращает один список объектов, неоднократно вызывая предоставленный метод запроса до тех пор, пока все результаты не будут собраны. Как правило, это следует использовать только в том случае, если Helpers.Unpaginate недоступен. Перегружается перегрузка, которая принимает дополнительную функцию преобразования, позволяя преобразовать результаты по мере их появления до добавления в список.

# Helpers.GetPaginatedFirstOrDefault

Это возвращает один результат из лицевой конечной точки. Он принимает предикатую функцию и возвращает первый ответ, который соответствует предикату.

Last Updated: 13.09.2023, 15:19:15