# DDB .NET クライアント

DDB マイクロサービス.NET クライアントは、C#などの言語でのすべての DDB 操作にアクセスできます。 各マイクロサービスには、別の Nuget パッケージを使用してアクセスできます。

外部ユーザーにはメモ - 次のセクションのリンクの多くは、内部アプリケーションを参照してください。 サポートについては、プロジェクトチームに相談してください。

# 前提条件

# インストール

# nuget.config

Nuget パッケージをインストールするには、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>

# パッケージ

各マイクロサービスは、別の Nuget パッケージによって提供されます。 パッケージは、コマンドでインストールできます。

dotnet add package <package name> --interactive

利用可能なパッケージは次のとおりです。

# 構成

あなたは必要です Azure AD アプリの登録 (opens new window) API にアクセスしているクライアントの場合。 アプリケーションにスコープとリダイレクト URI を構成する必要があります。

# スコープ

スコープはAPI permissionsページで構成されています。 これらはAdd a permissionを介して追加してから、APIS my organization usesを選択し、最後にDigitalDesignBriefAPIを選択できます。 必要な許可はuser_impersonationです。 これらを追加したら、サービスチケットにログインする必要があるGrant admin consent for Arupで承認する必要があります。

# URI をリダイレクトします

また、アプリケーションに Redirect 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静的クラスにあります。

ページネーションヘルパー関数は、エンドポイントを繰り返し呼び出して、結果のページ化されたリストを返すことを繰り返し単純化します。 例の署名は次のとおりです。

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

requestFunctionは、afterパラメーターを DDB 関数に渡す関数であり、最初は null に渡されます。

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: 2023/9/13 15:19:15