WebAPI2可选参数无法正常工作

时间:2016-12-12 23:52:09

标签: c# asp.net-web-api2 swagger-ui swashbuckle

我正在尝试为我的WebAPI2服务功能提供可选参数。 以下是路线的定义:

[HttpGet, Route("mp/CEG/{ST?}/{PR?}/{DES?}"), ResponseType(typeof(CEG))]
public object CEG(string ST = null, string PR = null, string DES = null)

但是,当我将其记录如下并尝试在Swagger UI(使用Swashbuckle构建)中运行测试时, 所有参数都表明它们是必需的,我不能提交没有参数的测试。

xmlDoc中:

/// <summary>
///     Gets list of Apps for passed ST, PR and/or DES 
/// </summary>
/// <param name="ST">ST</param>
/// <param name="PR">PR</param>
/// <param name="DES">DES</param>
/// <returns>List of CE Approvals</returns>

任何想法?

在Visual Studio中运行功能测试时,该函数不使用任何参数 它只是导致问题的SwaggerUI / Swashbuckle。我正在使用它来让我的消费者有机会进行测试。

更新到路线

[HttpGet, Route("mp/CEG/{ST}"),
          Route("mp/CEG/{PR}"),
          Route("mp/CEG/{DES}"),
          Route("mp/CEG/{ST}/{PR}"),
          Route("mp/CEG/{ST}/{DES}"),
          Route("mp/CEG/{PR}/{DES}"),
          ResponseType(typeof(CEG))]

1 个答案:

答案 0 :(得分:0)

您的路线不符合Swagger 2.0。正如specification所说的参数(用我的话说):

  

如果参数在&#34; path&#34;中,则始终需要参数。

为什么不将参数更改为查询参数,如下所示:

[HttpGet, Route("mp/CEG"), ResponseType(typeof(CEG))]
public object CEG(string ST = null, string PR = null, string DES = null)