【发布时间】:2021-03-09 05:09:46
【问题描述】:
我们想打开一个DELETE 端点,允许调用所有正整数,但不允许调用 id 1(又名元素 1 不能删除)
通常打开一个允许正整数的端点我这样配置路由
delete_elements:
path: /elements/{id}
methods: ["DELETE"]
controller: app.elements_delete
requirements:
id: '\d+'
对于这种情况,我尝试将正则表达式更改为也不允许数字 1 的正则表达式
delete_elements:
path: /elements/{id}
methods: ["DELETE"]
controller: app.elements_delete
requirements:
id: /^(?!(?:1)$)\d+/
但是当我修改需求并调用端点时,响应是端点不存在。
“未找到“DELETE /elements/59”的路径:不允许的方法(允许:GET,PUT)”
那个正则表达式有什么问题?禁止某些值的正确方法是什么?
【问题讨论】:
-
/^(?!(?:1)$)\d+/正则表达式的输入是什么? -
@yivi 建议的解决方案 id: \b1\b|(\d+) 允许删除 1。所以问题似乎不在正则表达式上。使用有效的正则表达式不会产生预期的行为。
标签: php regex symfony symfony4 symfony-routing