控制器上动态忽略WebAPI方法获取API资源管理器文档我们实现了一个webAPI,我们有很多API控制器。我们为我们的API提供API文档,我们想做的是从文档中排除某些Web方法,但我们想根据我们运行的环境动态地进行。只是为了让您了解我的意思,假设我有以下Web方法[ApiExplorerSettings(IgnoreApi=true)]publicProductgetProduct(){...}通过将ApiExplorerSettingAttribute上的IgnoreAPI属性设置为true,它从文档中获取不包括Web方法,这就是我们想要,但我们需要一种方法来动态设置“真实”值。理想情况下,我们希望为每个webMethod创建一个包含bool值的数据库表,并根据这些值设置IgnoreAPI属性的值。有没有办法做到这一点?感谢您的帮助。您可以实现自定义IApiExplorer并将其注册到WebAPI的服务,以完全控制列出或未列出的API。这是开发人员的博客文章,实现了其中的大部分内容:http://blogs.msdn.com/b/yaohuang1/archive/2012/05/13/asp-net-web-api-introducing-iapiexplorer-apiexplorer.aspx下面是IApiExplorer接口定义:http://msdn.microsoft.com/en-us/library/system.web.http.description.iapiexplorer(IApiExplorer.aspx你可以做的一件事是从现有的ApiExplorer实现派生(或重新使用现有源)并调用base获取默认列表,然后根据需要进一步过滤。根据s_hewitt的评论,建议是:从ApiExplorer派生,实现ShouldExploreAction和ShouldExploreController这两个方法是可行的方式.使用这两种方法进行数据库调用,基于路由、控制器和动作的查找。我不太了解WebAPI的文档生成,但我知道属性。属性被编译成代码并导致硬编码值直接保存在EXE或DLL中的数据中。它们无法更改。话虽如此,您可以在正常编译后将这些属性作为第二组应用。也许PostSharp可以在这里提供帮助?也许更改解决方案配置可能是一种指示您要构建哪个环境以及要让IgnoreApi处理哪些环境的方法。您可以创建自己的属性以应用于描述哪些方法应忽略该方法的方法。(如果你不是试图调用数据库来获取这些数据,我认为你更有可能在PostSharp中做你想做的事。)以上就是关于C#学习教程:动态忽略控制器上的WebAPI方法,用于api浏览器文档如果分享的所有内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
