# DDB .NET クライアント
DDB マイクロサービス.NET クライアントは、C#などの言語でのすべての DDB 操作にアクセスできます。 各マイクロサービスには、別の Nuget パッケージを使用してアクセスできます。
外部ユーザーにはメモ - 次のセクションのリンクの多くは、内部アプリケーションを参照してください。 サポートについては、プロジェクトチームに相談してください。
# 前提条件
- .NET
- これらのクライアントは、.NET 標準 2.0 をターゲットにします。 見る これ (opens new window) 互換性のある.NET バージョンのリストのページ。
- 新しいスタンドアロンプロジェクトを開始する場合は、.NET 6 を使用することをお勧めします。 arup アプリ (opens new window)
- Azure Artifacts 資格プロバイダー
- 指示に従ってください ここ (opens new window)
- 推奨される方法は、を使用することです 自動 PowerShell スクリプト (opens new window)
# インストール
# 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
利用可能なパッケージは次のとおりです。
Arup.DDB.CommentsService( API ドキュメント (opens new window) ))Arup.DDB.EnvironmentContextService( API ドキュメント (opens new window) ))Arup.DDB.ParameterMetadataService( API ドキュメント (opens new window) ))Arup.DDB.ParameterService( API ドキュメント (opens new window) ))Arup.DDB.QAService( API ドキュメント (opens new window) ))Arup.DDB.ReferenceDataService( API ドキュメント (opens new window) ))Arup.DDB.UserService( API ドキュメント (opens new window) ))
# 構成
あなたは必要です 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
これにより、ページングされたエンドポイントから単一の結果が返されます。 述語関数を取り、述語に一致する最初の応答を返します。