All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.0.0 - 2026-03-25
IHttpServiceinterface withGetAsync<T>,PostAsync<T>,PutAsync<T>,PatchAsync<T>,DeleteAsyncHttpResult<T>andHttpResult— result pattern with fluentOnSuccess/OnErrorAPIHttpServiceExceptionbase class and 8 typed exceptions:HttpBadRequestException,HttpUnauthorizedException,HttpForbiddenException,HttpNotFoundException,HttpConflictException,HttpUnprocessableEntityException,HttpTooManyRequestsException,HttpServerErrorExceptionHttpService.ThrowIfFailed(result)— converts a failedHttpResultto the appropriate typed exceptionIHttpServiceFactoryandHttpServiceFactoryfor named client resolutionHttpServiceOptionswith globalBaseUrl,TimeoutSeconds, and per-clientClientsdictionary- Priority chain for named client config: named client
BaseUrl/TimeoutSeconds→ global fallback AddAspNetCoreHttpKit(IConfiguration)andAddAspNetCoreHttpKit()DI extension methods- Automatic JSON serialization via
System.Text.Jsonwith camelCase naming policy IHttpLoggerinternal abstraction for pluggable logging- StructLog integration —
StructLogHttpLoggeruses StructLog with typed EventCodes ifIStructLog<T>is registered in DI - ILogger fallback —
ILoggerHttpLoggeris used automatically when StructLog is not registered HttpEventCodes— dedicated EventCodes per HTTP method:HTTP_GET_REQ,HTTP_GET_ERR,HTTP_POST_REQ,HTTP_POST_ERR,HTTP_PUT_REQ,HTTP_PUT_ERR,HTTP_PATCH_REQ,HTTP_PATCH_ERR,HTTP_DELETE_REQ,HTTP_DELETE_ERR,HTTP_TIMEOUT,HTTP_EXCEPTION- Timeout detection via
TaskCanceledException— distinguished from explicit cancellation ValidateOnStartfor configuration validation at startup- Unit test suite (
AspNetCoreHttpKit.Tests) withMockHttpMessageHandler— no network, no extra packages - MIT license