SAIF.NetCore.HttpClients overview¶
Documentation context: Packaged Component (NuGet)
SAIF.NetCore.HttpClients is a packaged implementation library that provides a single reusable outbound JSON HTTP client (HttpJsonClient) for other SAIF.NetCore libraries and consuming applications, wrapping RestSharp 106 and implementing the IHttpJsonClient/IHttpRequestResult contracts declared in SAIF.NetCore.ServiceContracts.
Purpose¶
- Provide a single, reusable implementation of
IHttpJsonClient/IHttpRequestResultso that SAIF.NetCore libraries and applications can issue outbound JSON HTTP requests (DELETE/GET/PATCH/POST/PUT, sync and async) without depending on RestSharp or Newtonsoft.Json types directly. - Supply bearer, HTTP Basic, and NTLM (explicit or current-identity) authentication for outgoing calls, caller-identity header propagation (
Client-Name,Application-ID,Client-User), configurable retry-on-status-code behavior, and result/error normalization. - Consumed by other SAIF.NetCore implementation libraries (for example SAIF.NetCore.ServiceExtensions, SAIF.NetCore.WindowsService, SAIF.NetCore.DBConnectionClient, SAIF.NetCore.OIDC, SAIF.NetCore.NtlmApiAuth) that resolve
IHttpJsonClientthrough dependency injection.
Responsibilities¶
- Implement the outbound HTTP request/response lifecycle: client creation, request construction, execution, retry, and result normalization.
- Hold per-instance request state (base URL,
ClientInfo, timeout override,HttpClientOptions, bearer token, custom headers, NTLM authenticator, last result) that callers configure before issuing requests. - Offer result-conversion helpers so callers can deserialize JSON content and read response headers in a strongly typed way.
Key components¶
HttpJsonClient: the request facade — construction, authentication setup, verb methods, and the private request/execute/retry pipeline.HttpRequestResult: the result model populated after each call, withGetResult<T>/GetContent<T>conversion helpers.HttpJsonClientExtensions: static content/header conversion helpers (ToReturnType<T>,GetHeaderValue<T>).ClientInfo: the caller-identity value object (machine name, application ID, user name) propagated as request headers.ClientNotInitializedException: thrown when a verb method is called before bothClientInfoand the base URL are set.
Related documentation¶
- Index
- Architecture
- Dependencies
- Operations and processes
- Business rules
- Security and authorization
- API reference
Sources¶
src/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/HttpJsonClient/HttpJsonClient.cssrc/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/HttpJsonClient/HttpRequestResult.cssrc/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/HttpJsonClient/HttpJsonClientExtensions.cssrc/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/ClientInfo.cssrc/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/Exceptions/ClientNotInitializedException.cssrc/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients.csproj