带有 Swagger 文档的可选 WebAPI 路由参数

Optional WebAPI routing parameters with Swagger documentation(带有 Swagger 文档的可选 WebAPI 路由参数)
本文介绍了带有 Swagger 文档的可选 WebAPI 路由参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个在属性中定义路由的 WebAPI 方法,有一个强制参数和一个可选参数:

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)
    {

我还使用 Swashbuckle/Swagger 来生成文档.问题是 Swagger 总是将我的可选参数标记为必需.

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?}")]

使这两个参数都像必需的一样,它也不会使 Swagger 将其显示为可选.

makes both parameters acting like they are required, it doesn't make Swagger to show it as optional either.

有没有办法使用 Swagger 为可选参数生成正确的文档?

Is there a way to generate correct documentation for optional parameters with Swagger?

推荐答案

如果重载方法,Swashbuckle 将生成两个不同的 Swagger 端点.一种方法有参数,另一种方法没有,并使用缺失"参数的默认值调用第一个方法.如果您使用诸如 HyprLinkr 之类的东西来生成 HATEOAS 链接,这还有一个优势,因为您不能在表达式中包含可选参数.

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.

[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);
}

希望对您有所帮助.

这篇关于带有 Swagger 文档的可选 WebAPI 路由参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)