Skip to main content

Command Palette

Search for a command to run...

How to add OData parameters to your ASP.Net Core API

Bridge the gap between Microsoft.AspNetCore.OData and Swashbuckle.AspNetCore

Published
How to add OData parameters to your ASP.Net Core API
J

A cloud solution architect and with a passion for Azure, .Net Core design patterns and a little Swift/iOS.

My team and I have worked with the OData nuget package from Microsoft to add some OData magic to a normal REST API based on ASP.Net Core 3.1 (that setup is a blog post for another day 😅).

But along the way we found, that there were no out-of-the box solution to get the OData parameters visible in our normal OpenApi spec (generated by Swashbuckle ).

So today I learned (#TIL) that its quite easy to inject some custom properties into the OpenAPI model trough a IOperationFilter.

To utilize the above code, you have to add the following to the AddSwaggerGen builder (in Startup.cs or similar).

services.AddSwaggerGen(c =>
{
...
    // Add support for OData-like REST endpoint with [EnableQuery]
    c.OperationFilter<ODataOperationFilter>();
...
});

This enables all the OData parameters on the API methods which have the [EnableQuery] attribute.