我遇到的情况是,当路径指向路径参数的路径时,通过swagger-ui
访问swagger时,不会显示此方法。
示例:
[Route("/{Version}/userdata", "GET")]
public class UserData
{
//...
}
我还使用/v1/getSomeData
和/v2/getSomeOtherData
等路径,这些路径在swagger-ui
中正确显示。但是也应该有一些方法可以有不同的版本(v1 / v2),我可以通过路径开头的路径变量访问它。
这可能是招摇吗?当然,我还需要为/{Version}/userdata
显示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的说法,使用现有工具不支持您想要做的事情。
如果是这种情况,并且您肯定需要为您的服务提供一个昂首阔步的定义,那么您可以执行以下操作之一:
在您的情况下,我认为最好的办法是更改端点路由,以便现有工具可以生成定义。这意味着删除路径参数。
如果你不能这样做,那么我会手动创建一个swagger 2.0定义。如果您需要帮助,请告诉我。