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 = true
nastavený na hodnotutrue
pridá 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 = null
cez 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ý .NETHttpClientHandler
môže byť výkonovo nedostatočný, je možné ho nahradiť za inú implementáciu.TimeSpan? timeout = null
nastavenie 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>>()
.