# DDB .NET Client
De DDB Microservices .NETC -client biedt toegang tot alle DDB -bewerkingen in talen zoals C#. Elke microservice is toegankelijk met een ander NuGet -pakket.
Opmerking voor externe gebruikers - Veel van de links in de volgende sectie verwijzen naar interne toepassingen. Praat alstublieft met uw projectteam voor ondersteuning.
# Voorwaarden
- .NET
- Deze klanten richten zich op .NET Standard 2.0. Zien dit (opens new window) pagina voor een lijst met compatibele .NET -versies.
- Als het starten van een nieuw, op zichzelf staand project wordt aanbevolen om .NET 6 te gebruiken, waaruit kan worden gedownload van Arup -apps (opens new window)
- Azure Artifacts Credential Provider
- Instructies volgen hier (opens new window)
- De aanbevolen methode is om de Automatisch PowerShell -script (opens new window)
# Installatie
# nuget.config
Een nuget.config
-bestand is vereist om de NuGet -pakketten te installeren. Maak het bestand naast uw .csproj
- of .sln
-bestand met de volgende inhoud:
<?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>
# Pakketjes
Elke microservice wordt geleverd door een ander NuGet -pakket. Pakketten kunnen worden geïnstalleerd met de opdracht:
dotnet add package <package name> --interactive
De beschikbare pakketten zijn:
Arup.DDB.CommentsService
( API -documenten (opens new window) ))Arup.DDB.EnvironmentContextService
( API -documenten (opens new window) ))Arup.DDB.ParameterMetadataService
( API -documenten (opens new window) ))Arup.DDB.ParameterService
( API -documenten (opens new window) ))Arup.DDB.QAService
( API -documenten (opens new window) ))Arup.DDB.ReferenceDataService
( API -documenten (opens new window) ))Arup.DDB.UserService
( API -documenten (opens new window) ))
# Configuratie
U hebt een Azure AD App -registratie (opens new window) voor de client die toegang heeft tot de API. U moet scopes en een omleidings -URI configureren voor uw toepassing.
# Klootzak
De scopes zijn geconfigureerd op de API permissions
-pagina. Deze kunnen worden toegevoegd via Add a permission
en vervolgens APIS my organization uses
selecteren en uiteindelijk DigitalDesignBriefAPI
selecteren. De vereiste toestemming is user_impersonation
. Nadat u deze hebt toegevoegd, moeten ze worden goedgekeurd met Grant admin consent for Arup
die in een serviceticket moet worden vastgelegd.
# Direct Uri omleiden
U moet ook een omleidings -URI voor uw toepassing configureren. Dit gebeurt op de Authentication
-pagina. Selecteer voor desktoptoepassingen Add a platform
, vervolgens Mobile and desktop applications
, en selecteer ten slotte https://login.microsoftonline.com/common/oauth2/nativeclient
. Volg voor andere toepassingen de instructies op de Authentication
-pagina.
# Gebruik
Het DDBClient -object configureert de authenticatie en omgeving voor elke microservice. Elke geïnstalleerde microservice kan vervolgens worden aangevraagd met behulp van de extensiemethoden op de client. Een implementatie van de token -acquisitie wordt verstrekt voor desktoptoepassingen. Andere applicaties, zoals servers, moeten hun eigen tokenacquisitie implementeren door de ITokenAcquisition
-interface te implementeren. Dit kan vervolgens worden doorgegeven aan de DDBClient
of DDBClientFactory
in de constructor.
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);
}
# Client Factory
Een DDBClientFactory
-klasse wordt ook verstrekt, waardoor DDBClient
objecten voor een bepaalde omgeving kunnen worden gecreëerd, terwijl authenticatie door de fabriek wordt afgehandeld. Dit kan nuttig zijn in scenario's waarbij afhankelijkheidsinjectie wordt gebruikt.
# Paginering
Helperfuncties worden geleverd voor het werken met gepagineerde eindpunten. Deze zijn te vinden in de Helpers
statische klasse.
De Pagination Helper -functies vereenvoudigen herhaaldelijk een eindpunt om een gepagineerde lijst met resultaten te retourneren. Een voorbeeldhandtekening is:
IAsyncEnumerable<O> Unpaginate<T, O>(RequestFunction<T> requestFunction, Func<T, IEnumerable<O>> getInner, Func<T, string> getAfter)
requestFunction
is een functie die de after
-parameter doorgeeft aan de DDB -functie, die aanvankelijk nul wordt doorgegeven.
getInner
haalt de innerlijke verzameling uit de resultaatrespons.
getAfter
haalt de after
cursor uit de resultaatrespons.
Bijvoorbeeld:
var results = Helpers.Unpaginate(
after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),
t => t.Parameters,
t => t?.Paging?.Cursors?.After
);
# Helpers.Unpaginate
Dit is verkrijgbaar bij .NET Core 3.1 en het wordt aanbevolen dat u dit gebruikt wanneer beschikbaar, omdat het lui elk verzoek zal doen zoals het wordt herhaald, in plaats van alle resultaten in het geheugen op te halen. Het retourneert een IAsyncEnumerable
, en met de Systeem.linq.async (opens new window) geïnstalleerde pakket kan worden bediend met bekende LINQ -methoden.
# Helpers.UnpaginateAll
Dit retourneert een enkele lijst met objecten door herhaaldelijk de verstrekte aanvraagmethode aan te roepen totdat alle resultaten zijn verzameld. Dit moet over het algemeen alleen worden gebruikt als Helpers.Unpaginate
niet beschikbaar is. Er wordt een overbelasting verstrekt die een extra transformatiefunctie nodig heeft, waardoor resultaten kunnen worden getransformeerd wanneer ze binnenkomen voordat ze aan de lijst worden toegevoegd.
# Helpers.GetPaginatedFirstOrDefault
Dit retourneert een enkel resultaat van een gepagineerd eindpunt. Het neemt een predicaatfunctie en retourneert de eerste reactie die overeenkomt met het predicaat.