# 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를 리디렉션하십시오

또한 응용 프로그램에 대한 리디렉션 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 정적 클래스에 있습니다.

Pagination 헬퍼 기능은 엔드 포인트를 반복적으로 호출하여 Paginated 결과 목록을 반환하기 위해 반복적으로 단순화합니다. 예제 서명은 다음과 같습니다.

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

requestFunctionafter 매개 변수를 DDB 함수로 전달하는 함수입니다.

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. 오후 3:19:15