Represents the NuGet versions.
- Fixed: Updated target frameworks to be
netcoreapp3.1;net6.0
.
- Enhancement: Added support within
WebApiActionBase
et al for automatic concurrency (ETag) checking/generation when the underlying data source does not support.
- Fixed: The
WebApiPatch
will now throw aValidationException
if the patch value JSON isnull
; i.e. there must be a patch instruction of some sort. - Fixed: Updated internal Beef dependencies to latest.
- Enhancement: Updated
WebApiQueryString.PagingArgsSkipQueryStringNames
to supportoffset
value, andWebApiQueryString.PagingArgsTakeQueryStringNames
to supportlimit
value.
- Fixed: Updated internal Beef dependencies to latest.
- Enhancement: Re-baseline all Beef components to version v4.2.1 required by
Beef.Abstractions
introduction; including updating all dependent NuGet packages to their latest respective version.
- Enhancement: Updated
WebApiStartup.ConfigurationBuilder
to finally probe the command-line arguments. - Enhancement: Updated project to produce symbol packages for improved debugging.
- Enhancement: Issue 116. Add capability to set the HTTP
Location
Header value.
- Fixed: Issue 114.
- Enhancement: Updated all dependent NuGet packages to their latest respective version.
- Fixed: Where calculating an
ETag
for a response that does not supportIETag
it was previously using theHashcode
to calculate. This is problematic as per this article. The new approach is to MD5 hash the serialized JSON.
- Fixed: An HTTP Delete will now catch a
NotFoundException
and return an HTTP Status Code 204 (no content) as a delete is considered idempotent.
- Enhancement: Introduction of Dependency Injection support.
- Fixed: Issue 60 fixed; ETag will be generated and returned correctly where underlying
Type
does not implementIETag
.
- Enhancement: Updated the
WebApiStartup.ConfigurationBuilder
to probe in the following order: 1) Azure Key Vault (see https://docs.microsoft.com/en-us/aspnet/core/security/key-vault-configuration), 2) User Secrets where hosting environment is development (see https://docs.microsoft.com/en-us/aspnet/core/security/app-secrets), 3) environment variable (using specified prefix), 4)appsettings.{environment}.json
, 5)appsettings.json
, 6)webapisettings.{environment}.json
(embedded resource), and 7)webapisettings.json
(embedded resource).
- Enhancement: Added
WebApiStartup.BuildWebHost
andWebApiStartup.ConfigurationBuilder
to provide the following capability in a standard manner: Builds (creates) theIWebHost
usingWebHost.CreateDefaultBuilder
, and build the configuration probing; will probe in the following order: 1) Azure Key Vault (see https://docs.microsoft.com/en-us/aspnet/core/security/key-vault-configuration) or User Secrets where hosting environment is development (see https://docs.microsoft.com/en-us/aspnet/core/security/app-secrets), 2) environment variable (using specified prefix), 3)appsettings.{environment}.json
, 4)appsettings.json
, 5)webapisettings.{environment}.json
(embedded resource), and 6)webapisettings.json
(embedded resource).
- Enhancement:
WebApiExecutionContextMiddleware
updated to use theCleaner.Clean
when setting theExecutionContext.Timestamp
.
- Enhancement: Updated all dependent NuGet packages to their latest respective version.
- Enhancement: Conversion to an intermediary
JToken
will only occur where field filtering is requested; otherwise, it will default to the standard ASP.NET serialization. Given that filtering is infrequently used this avoids an unnecessary conversion, which in micro-benchmark testing resulted in 2-4 times better serialization performance.
- Upgrade: Upgraded the project to .NET Core 3.1.
- Added: Nullable rollout phase: https://devblogs.microsoft.com/dotnet/embracing-nullable-reference-types/
- Fixed: Decoupled (removed) the
IncludeFields
andExcludeFields
from thePagingArgs
are these relate to any request not those that just include paging; these now exist as properties on theWebApiActionBase
.
- Enhancement: Sprinkled
Task.ConfigureAwait(false)
as per https://devblogs.microsoft.com/dotnet/configureawait-faq/.
- Fixed: Compile error from Visual Studio v16.4.1 corrected.
- Fixed: Introduced FxCop Analysis to
Beef.AspNetCore.WebApi
; this version represents the remediation based on the results. - Fixed: Introduced FxCop Analysis to
Beef.Core
; this version represents the remediation based on the results.
- Added:
WebApiQueryString.
added to parse the query string for$Text=true
. Where set then theExecutionContext.IsRefDataTextSerializationEnabled
will be automatically set totrue
before serializing the result enabling conditional reference data text output. An additionalXxxText
property must be explicitly added to enable;RefDataText
attribute to code-gen to support.
- Added:
WebApiQueryString.GetReferenceDataSelection
added to parse the query string for the reference data selection/filter.
- Fixed: A
PATCH
operation was incorrectly attempting to return anull
value where no changes were made as a result of merging the JSON changes; the result of theGET
will be returned to ensure a response (content) is returned.
- Fixed:
ExecutionContext.PagingArgs
always updated regardless of whether paging parameter explicitly defined. - Added:
WebApiActionBase
has newBodyValue
property that will be updated whenFromBodyAttribute
specified. A number of other properties have been madepublic
(fromprotected
) - theWebApiActionBase
is accessible fromExecutionContext.Properties[WebApiActionBase.ExecutionContextPropertyKey]
.
- Added: New
WebApiExecutionContextMiddleware
andWebApiExceptionHandlerMiddleware
added, includingUse*
extension methods to properly integrate into the pipeline as per https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware/write.
- Enhancement: An invocation with an
If-Match
will override the value where it implementsIEtag
as this should take precedence over the value inside of the value itself viaWebApiActionBase.Value
. Code-gen has also been updated to take advantage of this; next gen will introduce usage withinXxxApiController
classes.
- Fixed:
WebApiControllerHelper.SetETag
will not format where already formatted.
- Fixed: InvokerBase was non functioning as a generic class; reimplemented. Other Invokers updated accordingly.
- Fixed: Inconsistent version numbers.
- New: Initial publish to GitHub.