-
Notifications
You must be signed in to change notification settings - Fork 10.3k
Improve Minimal APIs support for request media types #35082 #35230
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
src/Mvc/Mvc.Core/test/DependencyInjection/MvcCoreServiceCollectionExtensionsTest.cs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Speaking to @halter73, the plan was for RequestDelegateFactory
to return an IReadOnlyList<object>
which will get added as endpoint metadata by the caller. Here's what I propose the API would look like:
public static RequestDelegateResult Create(MethodInfo methodInfo, Func<HttpContext, object>? targetFactory = null, RequestDelegateFactoryOptions? options = null)
where
public sealed class RequestDelegateResult
{
public RequestDelegate RequestDelegate { get; }
public IReadOnlyList<object> EndpointMetadata { get; }
}
src/Mvc/Mvc.Core/src/Builder/OpenApiEndpointConventionBuilderExtensions.cs
Outdated
Show resolved
Hide resolved
src/Mvc/Mvc.Core/src/Builder/OpenApiEndpointConventionBuilderExtensions.cs
Outdated
Show resolved
Hide resolved
src/Mvc/Mvc.Core/src/Builder/OpenApiEndpointConventionBuilderExtensions.cs
Outdated
Show resolved
Hide resolved
src/Mvc/Mvc.Core/src/Builder/OpenApiEndpointConventionBuilderExtensions.cs
Outdated
Show resolved
Hide resolved
src/Http/Routing/src/Builder/MinimalActionEndpointRouteBuilderExtensions.cs
Outdated
Show resolved
Hide resolved
src/Mvc/Mvc.ApiExplorer/src/EndpointMetadataApiDescriptionProvider.cs
Outdated
Show resolved
Hide resolved
src/Http/Routing/src/Builder/MinimalActionEndpointRouteBuilderExtensions.cs
Outdated
Show resolved
Hide resolved
src/Mvc/Mvc.ApiExplorer/src/EndpointMetadataApiDescriptionProvider.cs
Outdated
Show resolved
Hide resolved
src/Mvc/Mvc.Core/src/Builder/OpenApiEndpointConventionBuilderExtensions.cs
Outdated
Show resolved
Hide resolved
context.Results.SelectMany(r => r.SupportedRequestFormats), | ||
requestType => | ||
{ | ||
Assert.Equal("application/json", requestType.MediaType); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's the behavior now? Is the MediaType
just ""
or something? Or is the collection empty? Let's just add a regression test for whatever we think the behavior should be in this case rather than delete the test.
/backport to release/6.0-rc1 |
Started backporting to release/6.0-rc1: https://github.com/dotnet/aspnetcore/actions/runs/1152357480 |
@rafikiassumanimsft backporting to release/6.0-rc1 failed, the patch most likely resulted in conflicts: $ git am --3way --ignore-whitespace --keep-non-patch changes.patch
Applying: add support for request media types
Applying: change namespace for acceptsmatcher policy
Applying: additional changes
Using index info to reconstruct a base tree...
M src/Http/Http.Extensions/src/RequestDelegateFactory.cs
M src/Http/Routing/src/Builder/MinimalActionEndpointRouteBuilderExtensions.cs
Falling back to patching base and 3-way merge...
Auto-merging src/Http/Routing/src/Builder/MinimalActionEndpointRouteBuilderExtensions.cs
Auto-merging src/Http/Http.Extensions/src/RequestDelegateFactory.cs
CONFLICT (content): Merge conflict in src/Http/Http.Extensions/src/RequestDelegateFactory.cs
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0003 additional changes
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Error: The process '/usr/bin/git' failed with exit code 128 Please backport manually! |
…tnet#35230) * add support for request media types * change namespace for acceptsmatcher policy * additional changes * enable 415 when unsupported content type is provide * add accepts extension method on minimalActions endpoint * add IAcceptsMetadata to API description * add empty content type test * feat: add types for iacceptmetadata * change requestdelegate factory to return metatdata * clean RequestDelegateFactoryOptions.cs * change request delegate to return requestdelegateresult type * make apis property init only * adding constructor to requestdelegatefactoryResult * Fixups * fix merge errors * address pr comment * fix test error * remove options from params * implements iacceptsMetadata * fix test failures * fix test failures * move iacceptmetadata to shared source * add acceptsmetadata shared code to mvc * fix tests * address pr comments * address another comment * nit * fix duplicate media types * fix test failures Co-authored-by: Pranav K <[email protected]>
* [release/6.0-rc1] Update dependencies from dotnet/runtime dotnet/efcore (#35513) * Set HttpSys read error log levels to debug #35490 (#35542) Co-authored-by: Chris R <[email protected]> * [release/6.0-rc1] Treat reference type parameters in oblivious nullability context as optional (#35526) * Treat parameters in oblivious nullability context as optional * Only apply fix for reference types * Update optionality check in API descriptor * Update check in BindAsync and Mvc.ApiExplorer test * HTTP/3: Use new QuicStream.ReadsCompleted property in transport (#35483) Co-authored-by: James Newton-King <[email protected]> * HTTP/3: Fix incorrectly pooling aborted streams (#35441) * [release/6.0-rc1] Binding support for 'bool' values with InputRadioGroup and InputSelect (#35523) * Binding support for 'bool' values with InputRadioGroup and InputSelect (#35318) * Update CodeCheck.ps1 Co-authored-by: Brennan <[email protected]> * [release/6.0-rc1] Update dependencies from dotnet/efcore dotnet/runtime (#35558) * Update dependencies from https://github.com/dotnet/efcore build 20210820.19 Microsoft.EntityFrameworkCore.Tools , dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.Design From Version 6.0.0-rc.1.21420.8 -> To Version 6.0.0-rc.1.21420.19 * Update dependencies from https://github.com/dotnet/efcore build 20210820.22 Microsoft.EntityFrameworkCore.Tools , dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.Design From Version 6.0.0-rc.1.21420.8 -> To Version 6.0.0-rc.1.21420.22 * Update dependencies from https://github.com/dotnet/efcore build 20210820.30 Microsoft.EntityFrameworkCore.Tools , dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.Design From Version 6.0.0-rc.1.21420.8 -> To Version 6.0.0-rc.1.21420.30 * Update dependencies from https://github.com/dotnet/runtime build 20210820.15 Microsoft.NETCore.Platforms , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.Win32.SystemEvents , Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.Extensions.Primitives , Microsoft.Extensions.Options.DataAnnotations , Microsoft.Extensions.Options.ConfigurationExtensions , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.Extensions.Options , Microsoft.Extensions.Logging.TraceSource , Microsoft.Extensions.Logging.EventSource , Microsoft.Extensions.Configuration.UserSecrets , Microsoft.Extensions.Configuration.Json , Microsoft.Extensions.Configuration.Ini , Microsoft.Extensions.Configuration.FileExtensions , Microsoft.Extensions.Configuration.EnvironmentVariables , Microsoft.Extensions.Configuration.CommandLine , Microsoft.Extensions.Configuration.Binder , Microsoft.Extensions.Configuration.Xml , Microsoft.Extensions.Configuration.Abstractions , Microsoft.Extensions.Caching.Memory , Microsoft.Extensions.Caching.Abstractions , Microsoft.Extensions.Configuration , Microsoft.Extensions.DependencyInjection , Microsoft.Extensions.DependencyInjection.Abstractions , Microsoft.Extensions.Logging.EventLog , Microsoft.Extensions.Logging.Debug , Microsoft.Extensions.Logging.Console , Microsoft.Extensions.Logging.Configuration , Microsoft.Extensions.Logging.Abstractions , Microsoft.Extensions.Logging , Microsoft.Extensions.Http , Microsoft.Extensions.Hosting.Abstractions , Microsoft.Extensions.Hosting , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Extensions.FileSystemGlobbing , Microsoft.Extensions.FileProviders.Physical , Microsoft.Extensions.FileProviders.Composite , Microsoft.Extensions.FileProviders.Abstractions , Microsoft.Extensions.DependencyModel , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Ref , System.Windows.Extensions , System.Threading.Channels , System.Text.Json , System.Text.Encodings.Web , System.ServiceProcess.ServiceController , System.Drawing.Common , System.DirectoryServices.Protocols , System.Diagnostics.EventLog , System.Diagnostics.DiagnosticSource , System.IO.Pipelines , System.Security.Permissions , System.Security.Cryptography.Xml , System.Security.Cryptography.Pkcs , System.Runtime.CompilerServices.Unsafe , System.Resources.Extensions , System.Reflection.Metadata , System.Net.Http.WinHttpHandler , System.Net.Http.Json From Version 6.0.0-rc.1.21420.7 -> To Version 6.0.0-rc.1.21420.15 Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> * Improve Minimal APIs support for request media types #35082 (#35230) (#35579) * add support for request media types * [release/6.0-rc1] Update dependencies from dotnet/efcore dotnet/runtime (#35573) Co-authored-by: dotnet-maestro[bot] <42748379+dotnet-maestro[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Chris R <[email protected]> Co-authored-by: Safia Abdalla <[email protected]> Co-authored-by: James Newton-King <[email protected]> Co-authored-by: Mackinnon Buck <[email protected]> Co-authored-by: Brennan <[email protected]> Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> Co-authored-by: Rafiki Assumani <[email protected]>
@rafikiassumani-msft How does |
Hi @rachna-lad. It looks like you just commented on a closed PR. The team will most probably miss it. If you'd like to bring something important up to their attention, consider filing a new issue and add enough details to build context. |
Improve Minimal APIs support for request media types
PR Description
Refactoring code to prepare for changes that are needed to enable accepts media types for Minimal APIs
Fixes #35082