How do I define default value for property in swagger generated from following API?
public class SearchQuery
{
public string OrderBy { get; set; }
[DefaultValue(OrderDirection.Descending)]
public OrderDirection OrderDirection { get; set; } = OrderDirection.Descending;
}
public IActionResult SearchPendingCases(SearchQuery queryInput);
Swashbuckle generates OrderDirection as required parameter. I would like to be it optional and indicate to client the default value (not sure if swagger supports this).
I don't like making the property type nullable. Is there any other option? Ideally using built in classes...
I use Swashbuckle.AspNetCore - https://docs.microsoft.com/en-us/aspnet/core/tutorials/web-api-help-pages-using-swagger?tabs=visual-studio
Setting the default parameter value works like this if you can do it in your controller
I've always set the default on the param itself like this:
Here is how that looks like on the swagger-ui:
http://swashbuckletest.azurewebsites.net/swagger/ui/index#/TestPost/TestPost_Get
UPDATE
Following the discussion on the comments I updated Swagger-Net to read the
DefaultValueAttribute
via reflection Here is the sample class I'm using:and here is how the swagger json looks like:
The Source code of Swagger-Net is here:
https://github.com/heldersepu/Swagger-Net
And the source code for the test project is here:
https://github.com/heldersepu/SwashbuckleTest
In the YAML file, you can define which properties should be required. This example is from a NSwag configuration.
Swagger - Enums
Swagger - Unlocking the Spec: The default keyword