# ДДБ .NET клијент

ДДБ микросервисни .NET Клијент омогућава приступ свим ддб операцијама на језицима као што су Ц #.

Сваком микросервице се приступа другом НУГЕТ пакетом.

Напомена за спољне кориснике - Многе везе у следећем одељку односе се на интерне апликације. Молимо разговарајте са својим пројектним тимом за подршку.

# Предуслови

# Уградња

# nuget.config

Датотека nuget.config потребна је за инсталирање НУГЕТ пакета. Креирајте датотеку поред датотеке вашег .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>

# Пакети

Сваки микросервис обезбеђује другачији НУГЕТ пакет. Пакети се могу инсталирати са командом:

dotnet add package <package name> --interactive

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

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

Требаће вам Регистрација апликације Азуре АД (opens new window) за клијента који приступа АПИ-у. Морате да конфигуришете скоке и преусмеравање УРИ за своју пријаву.

# Лопови

Окопи су конфигурисани на страници API permissions. Они се могу додати кроз Add a permission, а затим одабрати APIS my organization uses и коначно одабрати DigitalDesignBriefAPI. Потребна дозвола је user_impersonation. Једном када их додате, мораће да буду одобрени са Grant admin consent for Arup које ће требати да се пријаве у сервисној карту.

# Преусмеравање ури

Такође ћете морати да конфигуришете преусмеравање УРИ за своју пријаву. То се ради на страници Authentication. За десктоп апликације изаберите Add a platform, а затим Mobile and desktop applications и на крају одаберите https://login.microsoftonline.com/common/oauth2/nativeclient. За остале апликације, следите упутства на страници Authentication.

# Употреба

ДДБЦлиент објект конфигурише аутентификацију и животну средину за сваки микросервис. Сваки инсталирани микросервис се затим може тражити коришћењем метода проширења на клијенту. Примјена аквизиције токена предвиђена је за на радне површине. Остале апликације, попут сервера, мораће да спроведу сопствену аквизицију токена спроводећи 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.

Функције пагинације Посебне функције поједностављују се више пута позивајући на крајњу тачку да би се вратили наговорна листа резултата. Пример потписа је:


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

requestFunction је функција која пролази параметар after на функцију ддба, у почетку се прослеђује нула.

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 цоре 3.1 и препоручује се да користите ово када је доступно, јер ће се лазитно натјерати сваки захтев како је иниран, а не да преузме све резултате у меморију. Враћа IAsyncEnumerable, и са Систем.линк.асинц (opens new window) Инсталирани пакет се може управљати са познатим Линк методама.

# Helpers.UnpaginateAll

Ово враћа јединствену листу предмета више пута позивајући на датину методу захтева док сви резултати нису прикупљени. То би се генерално требало користити само ако Helpers.Unpaginate није доступан. Омогућено је преоптерећење које предузима додатну функцију трансформације, омогућавајући трансформисање резултата док се улазе пре него што су додали на листу.

# Helpers.GetPaginatedFirstOrDefault

Ово враћа један резултат од страницене крајње тачке. Потребна је предикатна функција и враћа први одговор који одговара предикату.

Last Updated: 13.9.2023. 15:19:15