繁体   English   中英

动态忽略控制器上的 WebAPI 方法以获取 api 资源管理器文档

Dynamically Ignore WebAPI method on controller for api explorer documentation

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我们已经实现了一个 webAPI,我们有许多 API 控制器。 我们为我们的 API 提供了一个 API 文档,我们想要做的是从文档中排除某些 Web 方法,但我们希望根据我们正在运行的环境动态完成此操作。 只是为了让您了解我的意思,假设我有以下网络方法

[ApiExplorerSettings(IgnoreApi = true)] 
public Product getProduct()
{
   ...
}

通过将 ApiExplorerSettingAttribute 上的 IgnoreAPI 属性设置为 true,它从文档中排除了我们想要的 web 方法,但我们需要一种动态设置“true”值的方法。 理想情况下,我们希望有一个包含每个 webMethod 的 bool 值的数据库表,并基于这些设置 IgnoreAPi 属性的值。 有没有办法实现这一目标? 您的帮助将不胜感激。

2 个回复

您可以实现自定义IApiExplorer并将其注册到 Web API 的服务中,以完全控制列出或不列出哪些 API。

这是实现大部分内容的开发人员的博客文章: https : //docs.microsoft.com/en-us/archive/blogs/yaohuang1/asp-net-web-api-introducing-iapiexplorerapiexplorer

这是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 中执行您想要的操作。)

1 如何在文档资源管理器中重命名控制器?

Loopback 4生成了文档,我找到了有关单个查询属性以及如何重命名它们或进行自定义描述的信息。 但我找不到如何装饰控制器标题的任何内容,而不是PingController,而是“我的自定义ping控制器名称”之类的东西。 ...

6 Django GraphQL文档资源管理器编码

我对GraphQL文档浏览器有问题。 正如您在图片上所看到的,它存在俄语文本问题,它显示了一些经过两次编码的字符串,例如“ \\\\ u041c \\\\ u043e \\\\ u0441”。 如何解决这个问题? 添加: 现在,我做了一个这样的补丁(请参阅.replace( ...

7 如何从API资源管理器中检索数据?

我的问题更多是在“概念”方面,因为我没有任何代码可显示。 我基本上可以访问网站的API资源管理器,但是当我在API资源管理器中放置特定的url时检索到的信息与如果打开具有相同url的网页并获得的html信息不同。 “检查”元素。 老实说,我对如何检索所需的数据一无所知,因为它们仅存在于API ...

8 权限云资源管理器API

我正在开发一个应用程序,我需要从我的开发人员控制台创建,编辑和删除项目。 我正在使用Cloud Resource Manager API来实现此目的。 OAuth 2.0需要向API发出请求,因此我使用OAuth2.0服务器到服务器 (两条腿OAuth或2LO) 一旦我获得了授 ...

9 在App Engine中禁用API资源管理器

除了具有OAuth限制之外,还有其他方法可以禁止对App Engine中的API Explorer的访问吗? 示例场景:通过OAuth成功完成验证过程的用户现在可以使用API​​资源管理器,尽管这不是客户端希望他对API资源管理器的访问权限,而是完全在其App Engine中禁用了整个AP ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM