新添加的API参数未显示在Swagger中

时间:2018-03-01 18:10:51

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

我刚刚更改了我的Delete API:

    // DELETE: api/Doors/0
    /// <summary>
    /// Delete an existing door by id.
    /// </summary>
    /// <param name="id">The ID of the door to be deleted.</param>
    /// <returns></returns>
    public IHttpActionResult Delete(int id)
    {
        ....
    }

对此:

    // DELETE: api/Doors/0/0
    /// <summary>
    /// Delete an existing door by id.
    /// </summary>
    /// <param name="OrganizationSys">The Organization ID for the door to be deleted.</param>
    /// <param name="id">The ID of the door to be deleted.</param>
    /// <returns></returns>
    public IHttpActionResult Delete(int OrganizationSys, int id)
    {
        ....
    }

然后在Swagger中,新参数IS显示在Try It部分中,但它没有显示在标题中。见下面的截图...

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为是因为在您的RoutingConfig.cs(或同等)中,只有id参数设置为使用/以及所有其他参数(例如OrganizationSys}。 )必须使用?&

传递

例如:在您的xml评论中

DELETE: api/Doors/0/0

但实际上是

DELETE: api/Doors/0?OrganizationSys=123

创建标题时,Swagger可能无法识别查询字符串参数。

修改

这是我的意思的一个例子(取自默认的ASP .NET MVC Web应用程序)

// RoutingConfig.cs
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

此默认路由使id参数的行为与/123相同,而不是需要通过?id=123传递。