微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Sylius 中禁用 API 的管理部分?

如何解决如何在 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 举报,一经查实,本站将立刻删除。