# Máy khách DDB .NET

Máy khách DDB Microservice .NET cho phép truy cập vào tất cả các hoạt động DDB bằng các ngôn ngữ như C#.

Mỗi microservice được truy cập bằng gói Nuget khác nhau.

Lưu ý cho người dùng bên ngoài - Nhiều liên kết trong phần sau đây đề cập đến các ứng dụng nội bộ. Vui lòng nói chuyện với nhóm dự án của bạn để được hỗ trợ.

# Điều kiện tiên quyết

# Cài đặt

# nuget.config

Một tệp nuget.config được yêu cầu để cài đặt các gói NUGET. Tạo tệp bên cạnh tệp .csproj hoặc .sln của bạn với các nội dung sau:


xml version="1.0" encoding="utf-8"?

# Gói

Mỗi microservice được cung cấp bởi một gói nuget khác nhau. Các gói có thể được cài đặt với lệnh:

dotnet add package <package name> --interactive

Các gói có sẵn là:

# Cấu hình

Bạn sẽ cần một Đăng ký ứng dụng Azure AD (opens new window) Đối với khách hàng đang truy cập API. Bạn sẽ cần phải định cấu hình phạm vi và URI chuyển hướng cho ứng dụng của bạn.

# Phạm vi

Các phạm vi được cấu hình trên trang API permissions. Chúng có thể được thêm vào thông qua Add a permission, sau đó chọn APIS my organization uses và cuối cùng chọn DigitalDesignBriefAPI. Sự cho phép cần thiết là user_impersonation. Khi bạn đã thêm những thứ này, chúng sẽ cần phải được chấp thuận với Grant admin consent for Arup sẽ cần phải đăng nhập vào vé dịch vụ.

# Chuyển hướng URI

Bạn cũng sẽ cần định cấu hình URI chuyển hướng cho ứng dụng của bạn. Điều này được thực hiện trên trang Authentication. Đối với các ứng dụng máy tính để bàn, chọn Add a platform, sau đó Mobile and desktop applications và cuối cùng chọn https://login.microsoftonline.com/common/oauth2/nativeclient. Đối với các ứng dụng khác, hãy làm theo hướng dẫn trên trang Authentication.

# Cách sử dụng

Đối tượng DDBClient cấu hình xác thực và môi trường cho mỗi dịch vụ microser. Mỗi microservice được cài đặt sau đó có thể được yêu cầu bằng các phương thức mở rộng trên máy khách. Việc thực hiện việc thu nhận mã thông báo được cung cấp cho các ứng dụng máy tính để bàn. Các ứng dụng khác, chẳng hạn như máy chủ, sẽ cần thực hiện việc thu thập mã thông báo của riêng họ bằng cách triển khai giao diện ITokenAcquisition. Điều này sau đó có thể được chuyển cho DDBClient hoặc DDBClientFactory trong hàm tạo.

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

# Nhà máy khách hàng

Một lớp DDBClientFactory cũng được cung cấp, cho phép tạo các đối tượng DDBClient cho một môi trường nhất định, trong khi xác thực được xử lý bởi nhà máy. Điều này có thể hữu ích trong các kịch bản trong đó sử dụng tiêm phụ thuộc.

# Phân trang

Các chức năng trợ giúp được cung cấp để làm việc với các điểm cuối được phân trang. Chúng được tìm thấy trong lớp tĩnh Helpers.

Các chức năng của người trợ giúp phân trang đơn giản hóa nhiều lần gọi một điểm cuối để trả về một danh sách kết quả được phân trang. Một chữ ký ví dụ là:


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

requestFunction là một hàm truyền tham số after cho hàm DDB, ban đầu được truyền NULL.

getInner Nhận bộ sưu tập bên trong từ phản hồi kết quả.

getAfter Nhận con trỏ after từ phản hồi kết quả.

Ví dụ:


var results = Helpers.Unpaginate(

 after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),

 t => t.Parameters,

 t => t?.Paging?.Cursors?.After

);

# Helpers.Unpaginate

Điều này có sẵn từ .NET Core 3.1 và bạn nên sử dụng điều này khi có sẵn, vì nó sẽ lười biếng thực hiện mỗi yêu cầu vì nó được lặp lại, thay vì phải lấy tất cả các kết quả vào bộ nhớ. Nó trả về một IAsyncEnumerable và với System.linq.async (opens new window) Gói được cài đặt có thể được vận hành trên các phương thức LINQ quen thuộc.

# Helpers.UnpaginateAll

Điều này trả về một danh sách duy nhất các đối tượng bằng cách gọi nhiều lần phương thức yêu cầu được cung cấp cho đến khi tất cả các kết quả đã được thu thập. Điều này thường chỉ được sử dụng nếu Helpers.Unpaginate không có sẵn. Một quá tải được cung cấp có chức năng chuyển đổi bổ sung, cho phép kết quả được chuyển đổi khi chúng đến trước khi được thêm vào danh sách.

# Helpers.GetPaginatedFirstOrDefault

Điều này trả về một kết quả duy nhất từ điểm cuối được phân trang. Nó có một hàm vị ngữ và trả về phản hồi đầu tiên phù hợp với vị ngữ.

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