php - POST 路线中可选 slug 的可选训练斜线
问题描述
我正在使用 Symfony 4.2。当我使用可选参数设置路由时,我仍然可以使用不带斜杠的路由吗?
api_post:
path: /api/drive/{slug?}
controller: App\Controller\Api::load
methods: POST
我的问题是,上述路线仅适用于斜杠。这很明显,因为我在路径中的“驱动器”一词之后设置了这个斜杠。但是我怎样才能使斜杠也成为可选的呢?
解决方案
你可以尝试这样的事情:
api_post:
path: /api/{drive}{slug?}
controller: App\Controller\Api::load
methods: POST
requirements:
drive: "drive?"
slug: '[a-zA-Z0-9]*'
由于默认情况下斜杠字符是路由参数分隔符,因此您需要重写路由,以便drive
是可以选择接受/
作为最后一个字符的参数。
我使用了一个简单的正则表达式slug
,您需要找到一个适合您的用例的表达式。
这一点都不漂亮,但它确实有效。
就个人而言,我只会有两条不同的路线:
api_post_root:
path: /api/drive
controller: App\Controller\Api::load
methods: POST
api_post:
path: /api/drive/{slug?}
controller: App\Controller\Api::load
methods: POST
更容易看,更容易理解,如果你真的想要,你甚至可以用同一个控制器来处理它。
推荐阅读
- javascript - 用于从 URL 动态导入“插件”代码的 Javascript 模式
- ansible - Touch log file with Ansible only when it does not start with __
- ios - 已安装的应用程序灰显且无法打开
- javascript - 如何解决 math.js 中的未知数?
- java - 如何将 RadioGroup 验证为必填字段?
- wordpress - wp-admin 已经设置了 .htaccess 规则
- spring - "lateinit 属性
在 Kotlin 上使用带有 SpringBootTest 的 WebTestClient 时尚未初始化” - javascript - 我如何将 -tabulator excel- 对象发送到服务器端(node.js)?
- java - 在单个循环中查找具有最小平均值的整数数组中的子数组
- uwp - AppServiceConnection 重新构建已经运行的应用程序