Knihovny

Pro vývojáře je k dispozici SDK pro C# prostřednictvím:

Použití klienta/klientů z SDK je možné několika způsoby:

  • Bez IoC kontejneru:
    var client = ClientProvider.CreateClient().WithApiKey("your-api-key").Build();

    upozornění Při konzumaci klienta bez IoC kontejneru doporučujeme vytvořeného klienta cachovat a následně používat ideálně jako jednu instanci (singleton) Microsoft HttpClient guidelines.

  • S IoC kontejnerem založeným na IServiceCollection:
    serviceCollection.AddMphOpenApiClient().WithApiKey("your-api-key").Build();

    info Při konzumaci klienta s IoC kontejnerem je možné injectovat samotný MphApiClient či jednotlivé klienty podle typu např. IBanksClient.

Oba dva způsoby vytvoření/přidání klienta mají různé možnosti auth vůči API:

  • API klíčem přes metodu WithApiKey("your-api-key").
  • Předáním clientId a clientSecret, kde se o získání auth tokenu postará SDK WithClientCredentials("your-clientId", "your-clientSecret").
  • Přenechání zodpovědnosti získávání auth tokenu na konzumentovi SDK. V případě bez IoC WithBearerToken(async token => await GetToken()). S IoC je k dispozici ServiceProvider WithBearerToken(async (provider, token) => await provider.GetRequiredService<TokenGetter>().GetToken()).

Sestavení je nutné dokončit zavoláním metody Build(). Tato metoda přijímá volitelný objekt ClientOptions, přes který je možné upravit chování klienta. Konstruktor objektu nastavuje výchozí hodnoty takto ClientOptions(bool usePredefinedPolicies = true, HttpMessageHandler? innerHandler = null, TimeSpan? timeout = null), kde:

  • bool usePredefinedPolicies = true nastavený na hodnotu true přidá WaitAndRetry policy společně se CircuitBreaker policy, při použití s IoC kontejnerem, v nímž je zaregistrována nějaká implementace ILoggerFactory, budou "chyby" zaznamenány do logů.
  • HttpMessageHandler? innerHandler = null přes tento parametr je možné použít vlastní HttpClientHandler, který je zodpovědný za samotné odeslání požadavku. Např. při použití v mobilním prostředí, kde výchozí .NET HttpClientHandler může být výkonově nedostatečný, je možné jej nahradit za jinou implementaci.
  • TimeSpan? timeout = null nastavení timeoutu požadavku. Kde výchozí hodnota je převzatá z .NET, tj. 100 sekund.

tip Objekt MphApiClient má veřejnou metodu public TClient FindClient<TClient>(), přes kterou je možné získat instanci specifického klienta dynamicky bez nutnosti použít klienta definovaného v property. Např. var getClient = client.FindClient<IGetClient<TType>>().

An unhandled error has occurred. Reload 🗙