如何解决如何在 Sylius 中禁用 API 的管理部分?
我正在开发一个 Sylius 商店应用程序。
它的 API 提供前端/商店端点(/shop
的子路由)、管理后端端点(/admin
的子路由),以及一些与这些区域无关的其他端点(直接在 {{ 1}}).
我现在不使用 /
子路线,也没有计划在不久的将来使用。因此,我想禁用 Sylius Admin API 路由,并且还希望 Swagger UI 仅显示实际使用的路由/端点。
所以我需要(以某种方式)从 API 文档生成中排除 /admin
下的所有端点。
Sylius 文档文章“How to disable default shop,admin or API of Sylius?”展示了如何禁用系统的某些部分。但完全没有涵盖这种情况。
如何从 Sylius API 中删除 Admin API 端点(在最佳情况下:“集中”)?
解决方法
您可以修饰 Open API 规范工厂并删除这些路由。 Sylius 目前被锁定在 API Platform 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。