Skip to content

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/IHttpRequestResult so 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 IHttpJsonClient through 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, with GetResult<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 both ClientInfo and the base URL are set.

Sources

  • src/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/HttpJsonClient/HttpJsonClient.cs
  • src/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/HttpJsonClient/HttpRequestResult.cs
  • src/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/HttpJsonClient/HttpJsonClientExtensions.cs
  • src/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/ClientInfo.cs
  • src/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/Exceptions/ClientNotInitializedException.cs
  • src/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients/SAIF.NetCore.HttpClients.csproj