Yii2 使用 RESTful,urlManager 配置的 enableStrictParsing 如何设置为好?

Yii · mumu · 于 4年前 发布 · 10170 次阅读

yii2 basic版当中,我使用RESTful,同时我在Module下想建立个admin模块,urlManager配置enableStrictParsingtrue的情况下,访问首页或admin模块均报404 Not Found访问RESTful的资源能正常输出。

enableStrictParsing设置为 false后就正常了,但是访问RESTful资源,比如 www.abc.com/merchant, www.abc.com/merchants 后面有无“s”跟都可以访问,enableStrictParsingtrue是必须有“s”的。纠结,如何配置适当。

urlManager配置如下:

'urlManager' => [
    'enablePrettyUrl' => true,
    'enableStrictParsing' => true,
    'showScriptName' => false,
    'rules' => [
        ['class' => 'yii\rest\UrlRule', 'controller' => ['merchant']],
    ],
]
共收到 3 条回复 Yii2 RESTful urlManager enableStrictParsing
forecho#14年前 1 个赞

我写restful enableStrictParsing 这个参数一般不写,也就是 false。 这个参数为 true 的时候就会执行严格的URL管理。

为什么有s,首先你要了解 urlManagerrules

就拿 GetYii 来说:

rules' => [
    'member/<username:\w+>' => 'user/default/show',
],

这条路由规格不能写成

rules' => [
    'user/<username:\w+>' => 'user/default/show',
],

简单理解,就是前后两个单词是不能相同的,为了方便区分 restful 默认用复数形式。

当然你也可以用这种方式控制你的URL:

rules' => [
    'PUT,PATCH users/<id>' => 'user/update',
    'DELETE users/<id>' => 'user/delete',
    'GET,HEAD users/<id>' => 'user/view',
    'POST users' => 'user/create',
    'GET,HEAD users' => 'user/index',
    'users/<id>' => 'user/options',
    'users' => 'user/options',
]

参考:http://yii2.techbrood.com/guide-rest.html#routing

mumu#24年前 0 个赞

@forecho 谢谢,Yii2这一块的框架代码还没看呢,刚测试了配置,正如你所说,被默认复数区分了。

dafa168#32年前 0 个赞

复数也是可以删除的

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册