Knižnice
Pre vývojárov je k dispozícii SDK pre C# prostredníctvom:
- Dokumentácie Redoc, kde sú ukážky použitia pri jednotlivých endpointoch.
- NuGet package na nuget.org a to: klient a DTO.
Použitie klienta/klientov z SDK je možné niekoľkými spôsobmi:
-
Bez IoC kontajnera:
var client = ClientProvider.CreateClient().WithApiKey("your-api-key").Build();upozornění Pri konzumácii klienta bez IoC kontajnera odporúčame vytvoreného klienta cachovať a následne používať ideálne ako jednu inštanciu (singleton) Microsoft HttpClient guidelines.
-
S IoC kontajnerom založeným na IServiceCollection:
serviceCollection.AddMphOpenApiClient().WithApiKey("your-api-key").Build();info Pri konzumácii klienta s IoC kontajnerom je možné injectovať samotný
MphApiClientči jednotlivých klientov podľa typu napr.IBanksClient.
Oba dva spôsoby vytvorenia/pridania klienta majú rôzne možnosti auth voči API:
- API kľúčom cez metódu
WithApiKey("your-api-key"). - Odovzdaním clientId a clientSecret, kde sa o získanie auth tokenu postará SDK
WithClientCredentials("your-clientId", "your-clientSecret"). - Prenechanie zodpovednosti získavania auth tokenu na konzumentovi SDK. V prípade bez IoC
WithBearerToken(async token => await GetToken()). S IoC je k dispozícii ServiceProviderWithBearerToken(async (provider, token) => await provider.GetRequiredService<TokenGetter>().GetToken()).
Zostavenie je potrebné dokončiť zavolaním metódy Build(). Táto metóda prijíma voliteľný objekt ClientOptions, cez ktorý je možné upraviť správanie klienta. Konštruktor objektu nastavuje východiskové hodnoty takto: ClientOptions(bool usePredefinedPolicies = true, HttpMessageHandler? innerHandler = null, TimeSpan? timeout = null), kde:
bool usePredefinedPolicies = truenastavený na hodnotutruepridá WaitAndRetry policy spoločne s CircuitBreaker policy, pri použití s IoC kontajnerom, v ktorom je zaregistrovaná nejaká implementáciaILoggerFactory, budú "chyby" zaznamenané do logov.HttpMessageHandler? innerHandler = nullcez tento parameter je možné použiť vlastnýHttpClientHandler, ktorý je zodpovedný za samotné odoslanie požiadavky. Napr. pri použití v mobilnom prostredí, kde východiskový .NETHttpClientHandlermôže byť výkonovo nedostatočný, je možné ho nahradiť za inú implementáciu.TimeSpan? timeout = nullnastavenie timeoutu požiadavky. Kde východisková hodnota je prevzatá z .NET, tj. 100 sekúnd.
tip
Objekt MphApiClient má verejnú metódu public TClient FindClient<TClient>(), cez ktorú je možné získať inštanciu špecifického klienta dynamicky, bez nutnosti použiť klienta definovaného v property. Napr. var getClient = client.FindClient<IGetClient<TType>>().