POST 路由中可选 slug 的可选尾部斜杠
Optional trainling slash for optional slugs in POST route
我正在使用 Symfony 4.2。当我设置一个带有可选参数的路由时,我仍然可以使用没有尾部斜杠的路由吗?
api_post:
path: /api/drive/{slug?}
controller: App\Controller\Api::load
methods: POST
我的问题是,上面的路由仅适用于尾部斜杠。
这很明显,因为我在路径中的单词 "drive" 之后设置了这个斜杠。但是我怎样才能使尾部斜杠也可选?
你可以试试这样:
api_post:
path: /api/{drive}{slug?}
controller: App\Controller\Api::load
methods: POST
requirements:
drive: "drive?"
slug: '[a-zA-Z0-9]*'
由于by default the slash character is a route parameter separator,您需要重写路由,使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
更美观,更容易理解,如果你真的愿意,你甚至可以用同一个控制器来处理它。
我正在使用 Symfony 4.2。当我设置一个带有可选参数的路由时,我仍然可以使用没有尾部斜杠的路由吗?
api_post:
path: /api/drive/{slug?}
controller: App\Controller\Api::load
methods: POST
我的问题是,上面的路由仅适用于尾部斜杠。 这很明显,因为我在路径中的单词 "drive" 之后设置了这个斜杠。但是我怎样才能使尾部斜杠也可选?
你可以试试这样:
api_post:
path: /api/{drive}{slug?}
controller: App\Controller\Api::load
methods: POST
requirements:
drive: "drive?"
slug: '[a-zA-Z0-9]*'
由于by default the slash character is a route parameter separator,您需要重写路由,使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
更美观,更容易理解,如果你真的愿意,你甚至可以用同一个控制器来处理它。