代码之家  ›  专栏  ›  技术社区  ›  Casey Crookston

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

  •  1
  • Casey Crookston  · 技术社区  · 6 年前

    我刚刚更改了删除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中,新参数显示在Try It部分,但它没有显示在标题中。请参见下面的屏幕截图。。。

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  1
  •   Omar Himada    6 年前

    我想是因为你 RoutingConfig.cs (或同等产品)只有 id 参数设置为使用 / ,以及所有其他参数(例如 OrganizationSys )必须使用 ? &

    e、 g.:在xml注释中

    DELETE: api/Doors/0/0

    但实际上

    DELETE: api/Doors/0?OrganizationSys=123

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

    编辑:

    下面是我的意思的一个示例(取自默认的ASP.NETMVC web应用程序)

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

    此默认路由使 身份证件 参数的行为使用 /123 而不是需要通过 ?id=123 .