ASP.NET Core 2.1 Swagger(swashbuckle) Url 模板可选参数

ASP.NET Core 2.1 Swagger(swashbuckle) Url template optional parameter

[HttpGet("commercial/{fromCcy}/{toCcy?}")]
public ActionResult Commercial(string fromCcy, string toCcy)

我有带有可选参数 "toCcy" 的操作 "commercial",并且生成带有必填字段的 swagger 规范。有什么办法可以解决这个问题吗?

当你使用可选参数时,最好的方法是使用[Fromquery]。例如:

[HttpGet("commercial")]
public ActionResult Commercial([FromQuery] OptionsViewModel viewModel)
{
...
}

public class OptionsViewModel
{
    public string FromCcy { get; set; }
    public string ToCcy { get; set; }
}

然后 Swagger 将所有参数显示为可选:

Swagger UI Parameters:

Name    Description
FromCcy
string
(query)  

ToCcy
string
(query)