# DDB .NET pelanggan

Pelanggan Microservices .NET DDB membolehkan akses kepada semua operasi DDB dalam bahasa seperti C#. Setiap microservice diakses menggunakan pakej NuGet yang berbeza.

Catatan untuk pengguna luaran - Banyak pautan dalam bahagian berikut merujuk kepada aplikasi dalaman. Sila bercakap dengan pasukan projek anda untuk mendapat sokongan.

# Prasyarat

# Pemasangan

# nuget.config

Fail nuget.config diperlukan untuk memasang pakej NUGET. Buat fail di sebelah fail .csproj atau .sln anda dengan kandungan berikut:

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

# Pakej

Setiap microservice disediakan oleh pakej NuGet yang berbeza. Pakej boleh dipasang dengan arahan:

dotnet add package <package name> --interactive

Pakej yang ada ialah:

# Konfigurasi

Anda akan memerlukan Pendaftaran Aplikasi Azure AD (opens new window) Bagi pelanggan yang mengakses API. Anda perlu mengkonfigurasi skop dan URI redirect untuk permohonan anda.

# Skop

Skop dikonfigurasi pada halaman API permissions. Ini boleh ditambah melalui Add a permission, kemudian memilih APIS my organization uses, dan akhirnya memilih DigitalDesignBriefAPI. Kebenaran yang diperlukan ialah user_impersonation. Sebaik sahaja anda telah menambah ini, mereka perlu diluluskan dengan Grant admin consent for Arup yang perlu dilog masuk dalam tiket perkhidmatan.

# Redirect uri

Anda juga perlu mengkonfigurasi URI redirect untuk permohonan anda. Ini dilakukan pada halaman Authentication. Untuk aplikasi desktop, pilih Add a platform, kemudian Mobile and desktop applications, dan akhirnya pilih https://login.microsoftonline.com/common/oauth2/nativeclient. Untuk aplikasi lain, ikuti arahan pada halaman Authentication.

# Penggunaan

Objek DDBClient mengkonfigurasi pengesahan dan persekitaran untuk setiap microservice. Setiap microservice yang dipasang kemudian boleh diminta menggunakan kaedah lanjutan pada klien. Pelaksanaan pengambilalihan token disediakan untuk aplikasi desktop. Aplikasi lain, seperti pelayan, perlu melaksanakan pengambilalihan token mereka sendiri dengan melaksanakan antara muka ITokenAcquisition. Ini kemudiannya boleh dihantar ke DDBClient atau DDBClientFactory dalam pembina.

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

# Kilang pelanggan

Kelas DDBClientFactory juga disediakan, yang membolehkan penciptaan objek DDBClient untuk persekitaran yang diberikan, sementara pengesahan dikendalikan oleh kilang. Ini berguna dalam senario di mana suntikan ketergantungan digunakan.

# Penomboran

Fungsi penolong dibekalkan untuk bekerja dengan titik akhir paginated. Ini terdapat dalam kelas statik Helpers.

Fungsi penolong penomboran memudahkan berulang kali memanggil titik akhir untuk mengembalikan senarai hasil yang dipertahankan. Tandatangan contoh ialah:

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

requestFunction adalah fungsi yang melepasi parameter after ke fungsi DDB, pada mulanya diluluskan null.

getInner Mendapat koleksi dalaman dari tindak balas hasil.

getAfter Mendapat kursor after dari tindak balas hasil.

Sebagai contoh:

var results = Helpers.Unpaginate(
 after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),
 t => t.Parameters,
 t => t?.Paging?.Cursors?.After
);

# Helpers.Unpaginate

Ini boleh didapati dari .NET Core 3.1 dan disyorkan anda menggunakan ini apabila tersedia, kerana ia akan malas membuat setiap permintaan kerana ia diulang, dan bukannya perlu mengambil semua hasil ke dalam ingatan. Ia mengembalikan IAsyncEnumerable, dan dengan System.linq.async (opens new window) Pakej yang dipasang boleh dikendalikan dengan kaedah LINQ yang biasa.

# Helpers.UnpaginateAll

Ini mengembalikan satu senarai objek dengan berulang kali memanggil kaedah permintaan yang disediakan sehingga semua hasil telah dikumpulkan. Ini biasanya hanya digunakan jika Helpers.Unpaginate tidak tersedia. Kelebihan beban disediakan yang mengambil fungsi transformasi tambahan, yang membolehkan keputusan berubah ketika mereka masuk sebelum dimasukkan ke dalam senarai.

# Helpers.GetPaginatedFirstOrDefault

Ini mengembalikan satu hasil dari titik akhir yang dipertahankan. Ia memerlukan fungsi predikat dan mengembalikan tindak balas pertama yang sepadan dengan predikat.

Last Updated: 13/9/2023, 3:19:15 PTG