symfony + api 平台 - 为路由创建别名

Posted

技术标签:

【中文标题】symfony + api 平台 - 为路由创建别名【英文标题】:symfony + api platform - creating alias to a route 【发布时间】:2021-08-20 07:21:52 【问题描述】:

我们有一个相当标准的 symfony + api-platform 项目。

不久前,当创建一条路线时,其中有一个错字。我注意到了这一点,并想在未来修复它。问题是我们的一些客户可能已经这样实施了。我希望它还能工作一段时间,而不会暴露在文档中。我可以通过覆盖生成器服务来处理文档部分,所以这不是问题。

问题是我找不到在 api-platform 中创建别名的方法。知道我该怎么做吗?项目操作定义如下所示:

 *         get"=
 *             "method"="GET",
 *             "path"="/pathWithTypo/id",
 *             "requirements"="id"="[0-9A-Z]+-[0-9A-Z]+",
 *             "normalization_context"="groups"="someGroup"
 *         

【问题讨论】:

我会在 webserver (apache, nginx) 配置中使用 RewriteRule。 httpd.apache.org/docs/2.4/rewrite/remapping.html 这不是一个坏主意。虽然像在控制器等上那样添加别名会很棒。 您是否尝试将路由放入 config/routes.yaml ?还可以使用 nelmio api doc 过滤掉不想出现在文档中的路径 (path_patterns)。 【参考方案1】:

只需复制“get”操作并为其命名:

itemOperations=
    "get"=
        "method"="GET",
        "path"="/pathWithTypo/id",
        "requirements"="id"="[0-9A-Z]+-[0-9A-Z]+",
        "normalization_context"="groups"="someGroup"
    ,
    "get_without_typo"=
        "method"="GET",
        "path"="/pathWithoutTypo/id",
        "requirements"="id"="[0-9A-Z]+-[0-9A-Z]+",
        "normalization_context"="groups"="someGroup"
    

因此,您可以轻松删除旧的get 操作并将get_without_typo 重命名为get

要从文档中删除一些端点 - 我创建了自己的选项 - remove_from_docs。我可以和你一起share它。

【讨论】:

我试试看。

以上是关于symfony + api 平台 - 为路由创建别名的主要内容,如果未能解决你的问题,请参考以下文章

使用带有 api 平台和 symfony 的转换器时,GET 结果为空

Symfony中的API版本控制

Symfony 4 API 平台和 JWT:如何使用 Symfony 客户端项目登录 API?

Symfony:具有不同参数的多个路由,默认为空

Symfony 子域路由

无法获取路由 Symfony