Knihovny
Pro vývojáře je k dispozici SDK pro C# prostřednictvím:
- Dokumentace Redoc, kde jsou ukázky použití u jednotlivých endpointů.
- NuGet package na nuget.org a to: klient a DTO.
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 ServiceProviderWithBearerToken(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 hodnotutrue
přidá WaitAndRetry policy společně se CircuitBreaker policy, při použití s IoC kontejnerem, v nímž je zaregistrována nějaká implementaceILoggerFactory
, 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í .NETHttpClientHandler
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>>()
.