【问题标题】:Hide some api in swagger ui在 swagger ui 中隐藏一些 api
【发布时间】:2023-07-20 12:18:01
【问题描述】:
是否可以在 hapi-swagger 中根据用户角色从文档 (swagger ui) 中隐藏一些 API。
我的意思是假设我有 /employee 和 /admin 两个 API,所以每当管理员登录到 swagger ui 或 swagger 文档时,/employee 和 /admin API 都应该显示在页面上,如果员工登录到 swagger ui 那么它应该只显示/employeeAPI。
【问题讨论】:
标签:
node.js
swagger-ui
hapijs
hapi-swagger
【解决方案1】:
您可以通过在配置中省略 ['tag'] 值来隐藏路由,但如果不进行大量修改,您将无法在基于用户的角色上使用此功能。文档是在服务器启动时生成的,而不是即时生成的,这就是为什么您需要重新加载服务器以反映更改的原因。
我有一个类似的用例,最后我决定为两种不同的服务(在您的情况下为员工和管理员)使用不同的端点更有意义。因此,也许像 api.domain.com/internal 和 api.domain.com/external 之类的东西,如果需要,可以很容易地围绕其中任何一个进行身份验证。如果您希望授予开发人员在一个 API 组上工作的访问权限,而不是同时开放这两个 API 组的访问权限,这也会带来优势。