# 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
これにより、ページングされたエンドポイントから単一の結果が返されます。 述語関数を取り、述語に一致する最初の応答を返します。