swagger不显示以path参数开头的调用

时间:2017-01-16 14:56:08

标签: .net servicestack swagger

我遇到的情况是,当路径指向路径参数的路径时,通过swagger-ui访问swagger时,不会显示此方法。

示例:

[Route("/{Version}/userdata", "GET")]
public class UserData
{
 //...
}

我还使用/v1/getSomeData/v2/getSomeOtherData等路径,这些路径在swagger-ui中正确显示。但是也应该有一些方法可以有不同的版本(v1 / v2),我可以通过路径开头的路径变量访问它。

这可能是招摇吗?当然,我还需要为/{Version}/userdata显示2种方法,因为每个版本都有不同的响应等。

2 个答案:

答案 0 :(得分:1)

Swagger UI组并在 root / path 下显示其路径,该路径需要是文字路径。

答案 1 :(得分:1)

您的端点的swagger 2.0 specification定义如下所示:

{
    "paths":{
        "/{Version}/userdata":{
            "get":{
                "produces":[
                    "application/json",
                    "text/json"
                ],
                "parameters":[
                    {
                        "name":"Version",
                        "in":"path",
                        "required":true,
                        "type":"string"
                    }
                ],
                "responses":{
                    "200":{
                        "description":"OK"
                    },
                    etc...
                }
            }
        }
    }
}

因此,使用swagger规范定义端点/{Version}/userdata本质上是不可能的。

但是,服务堆栈招摇生成tooling仅支持招摇1.2 spec。根据服务堆栈技术主管@mythz的说法,使用现有工具不支持您想要做的事情。

如果是这种情况,并且您肯定需要为您的服务提供一个昂首阔步的定义,那么您可以执行以下操作之一:

  1. 将您的终端路线更改为工具支持的内容
  2. 手动创建招摇定义
  3. 更改您的工具
  4. 在您的情况下,我认为最好的办法是更改端点路由,以便现有工具可以生成定义。这意味着删除路径参数。

    如果你不能这样做,那么我会手动创建一个swagger 2.0定义。如果您需要帮助,请告诉我。