我正在开发一个Sylius商店应用程序。它的API提供了前端/商店端点(/shop
的子路由),管理后端端点(/admin
的子路由),以及一些与这些区域无关的其他端点(直接在/
下)。
我现在不使用/admin
子路线,也不打算在不久的将来使用。所以我想禁用Sylius Admin API路由,并希望Swagger UI只显示实际使用的路由/端点。
所以我需要从API文档生成中排除(以某种方式)/admin/***
下的所有端点。
Sylius文档文章"如何禁用Sylius的默认商店,管理员或API ?"演示如何禁用系统的某些部分。
如何从Sylius API中删除管理API端点(在最好的情况下:"集中")?
你可以修饰Open API规范工厂并删除这些路由。Sylius目前被锁定在API平台v2.5上,不能与v2.6一起工作,所以这里有关于如何定制Open API文档的相应文档:https://github.com/api-platform/docs/blob/2.5/core/swagger.md#overriding-the-openapi-specification。代码可能像这样:
foreach ($docs['paths'] as $path => $pathItem) {
if (false !== strpos($path, '/admin/')) {
unset($docs['paths'][$path]);
}
}
您可能还需要删除管理操作的模式。
编辑注意:这只会从文档中删除路由,但路由仍然是活跃的。您可以添加防火墙规则来限制对这些路由的访问,或者添加请求事件侦听器/订阅者,并在请求此类路由时返回404或类似的内容。
如果我理解正确的话,你需要覆盖Sylius上的Swagger来隐藏你不需要的端点。
我不是Sylius专家,但你的问题看起来像这样https://api-platform.com/docs/core/openapi/#overriding-the-ui-template