我正在尝试为我的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))]
答案 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)