Knižnice

Pre vývojárov je k dispozícii SDK pre C# prostredníctvom:

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 ServiceProvider WithBearerToken(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 hodnotu true pridá WaitAndRetry policy spoločne s CircuitBreaker policy, pri použití s IoC kontajnerom, v ktorom je zaregistrovaná nejaká implementácia ILoggerFactory, 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ý .NET HttpClientHandler 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>>().

An unhandled error has occurred. Reload 🗙