2017-08-14 346 views
2

我正在用Swashbuckle编写api,但遇到问题。我在我的AController三种送方法:Swagger UI中没有显示方法(w/Swashbuckle)但没有错误消息

[ResponseType(typeof(IEnumerable<A>))] 
public IHttpActionResult Get(int bId); 

[ResponseType(typeof(IEnumerable<A>))] 
public IHttpActionResult Get(IList<int> cIds); 

[ResponseType(typeof(IEnumerable<A>))] 
public IHttpActionResult Get(int bId, IList<int> cIds); 

我希望无论是有关超载的端点错误或它与一个单一的get方法工作有两个可选参数,涵盖了所有的情况。相反,我只得到第二种显示方法,这看起来是任意的。

我想知道,有没有什么办法让所有的三个工作,而且,有没有第二种方法显示在UI中的机会的原因?谢谢!

+0

您能否提供一个更完整的接口示例和您的类实现?我对“Swagger”或“Swashbuckle”都不熟悉,但我猜你的问题不在你在这里发布的内容中。或者可能你没有很好的重建。尝试彻底清理您的解决方案...进入文件夹并手动删除解决方案每个项目中的所有“bin”和“obj”文件夹。然后做一个新的构建。 – gmiley

+0

感谢您的建议,我排除了重建的可能性,但没有帮助。我即将编辑添加更多细节,但我知道Swagger对apis的设计非常挑剔。例如,我本来期望拥有的一个常见问题是:https://github.com/domaindrivendev/Swashbuckle/issues/142 – Jeremy

+0

您可以使用所有三种方法吗?我猜测只有一种方法建立了它的路线。 – Amy

回答

1

要回答你的第一个问题,你可以通过为它们定义不同的端点来获得所有三种GET方法。对于每个GET方法,添加以下属性:[HttpGet(“the_end_point_you_want”)]。

即)

[HttpGet("/GetbID/{bId})") 
[ResponseType(typeof(IEnumerable<A>))] 
public IHttpActionResult Get(int bId) 

[HttpGet("/GetListcId")] 
[ResponseType(typeof(IEnumerable<A>))] 
public IHttpActionResult Get(IList<int> cIds) 

关于第二个问题,我不清楚,为什么选择第二GET,但我的猜测是SwashBuckle如何检索每个GET方法。

希望这会有所帮助

相关问题