我有一个WebAPI方法,在属性中定义了路由,有一个必需参数和一个可选参数:
[HttpGet]
[Route("api/ChargeCard/{cif}/{feeScheme=null}")]
[ResponseType(typeof(ChargeCardRoot))]
public IHttpActionResult Get(string cif, string feeScheme, ChargeCardRequestMode mode = ChargeCardRequestMode.Basic)
{
我还使用Swashbuckle / Swagger生成文档。问题是Swagger总是根据需要标记我的可选参数。
将可选参数表示法更改为:
[Route("api/ChargeCard/{cif}/{feeScheme?}")]
使两个参数都表现得像它们一样,它也不会让Swagger将它显示为可选参数。
有没有办法用Swagger为可选参数生成正确的文档?
答案 0 :(得分:4)
如果重载方法,Swashbuckle将生成两个不同的Swagger端点。一种方法有参数,另一种方法没有,并用#34;缺少"的默认值调用第一种方法。参数。如果您使用HyprLinkr之类的东西来生成HATEOAS链接,这也有一个优势,因为您不能在表达式中使用可选参数。
[HttpGet]
[Route("api/ChargeCard/{cif}/{feeScheme}")]
[ResponseType(typeof(ChargeCardRoot))]
public IHttpActionResult Get(string cif, string feeScheme, ChargeCardRequestMode mode = ChargeCardRequestMode.Basic)
{
// working code
}
[HttpGet]
[Route("api/ChargeCard/{cif}")]
[ResponseType(typeof(ChargeCardRoot))]
public IHttpActionResult Get(string cif, string feeScheme)
{
return Get(cif, feeScheme, ChargeRequestMode.Basic);
}
希望有所帮助。