I have a WebAPI method with routing defined in an attribute, having one mandatory parameter and one optional:
[HttpGet]
[Route("api/ChargeCard/{cif}/{feeScheme=null}")]
[ResponseType(typeof(ChargeCardRoot))]
public IHttpActionResult Get(string cif, string feeScheme, ChargeCardRequestMode mode = ChargeCardRequestMode.Basic)
{
I also use Swashbuckle / Swagger to generate documentation. The problem is that Swagger always marks my optional parameter as required.
Changing optional parameter notation to:
[Route("api/ChargeCard/{cif}/{feeScheme?}")]
makes both parameters acting like they are required, it doesn't make Swagger to show it as optional either.
Is there a way to generate correct documentation for optional parameters with Swagger?
If you overload your methods, Swashbuckle will generate two different Swagger endpoints. One method has the parameter, the other does not and calls the first one with the default value for the "missing" parameter. This also has the advantage of making it easier if you using something like HyprLinkr to generate HATEOAS links, as you can't have optional parameters in an expression.
Hope that helps.