Php yii2中的url管理器restful api

Php yii2中的url管理器restful api,php,.htaccess,yii2,restful-url,Php,.htaccess,Yii2,Restful Url,1.如何创建此url http://localhost/travia-api/backend/web/v1/flight?id=4FR996IN2F829M 对此 http://localhost/travia-api/backend/web/v1/flight/4FR996IN2F829M 这是我的配置 'urlManager' => [ 'class' => 'yii\web\UrlManager', 'showScriptName' =&

1.如何创建此url

http://localhost/travia-api/backend/web/v1/flight?id=4FR996IN2F829M
对此

http://localhost/travia-api/backend/web/v1/flight/4FR996IN2F829M
这是我的配置

  'urlManager' => [
        'class' => 'yii\web\UrlManager',
        'showScriptName' => false,
        'enablePrettyUrl' => true,
        'rules' => [
            'class' => 'yii\rest\UrlRule',
            'controller' => 'flight',

            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+>' => '<controller>/<action>/view',
            '<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+>' => '<controller>/<action>',
           '<controller:[\w\-]+>/<action:[\w\-]+>' => '<controller>/<action>',
           'v1/<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+>' => 'v1/<controller>/<action>',
           'v1/<controller:[\w\-]+>/<action:[\w\-]+>' => 'v1/<controller>/<action>',
           'module/<module:[\w\-]+>/<controller:[\w\-]+>/<action:[\w\-]+>' => '<module>/<controller>/<action>',
        ],
2.当我想添加新模式时,我会将这些行添加到配置中

extraPatterns[
   'GET search' => 'search'
]
在那之后,我犯了这样的错误

未知属性–yii\base\UnknownPropertyException 正在设置未知属性:yii\web\UrlRule::GET search

我做了很多,但我找不到有用的东西! 提前谢谢

根据这些规则:

'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+>' => '<controller>/<action>/view',
'<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+>' => '<controller>/<action>',
'v1/<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+>' => 'v1/<controller>/<action>',
'v1/<controller:[\w\-]+>/<action:[\w\-]+>' => 'v1/<controller>/<action>',
因为您需要数字和文字:

http://localhost/travia-api/backend/web/v1/flight/4FR996IN2F829M
我不知道如何正确解决第二个问题,但请尝试以下方法:

extraPatterns[
   'GET{id}' => 'search'
]
我看到了

编辑:

更改此规则:

'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+>' => '<controller>/<action>/view',
'<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+>' => '<controller>/<action>',
'v1/<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+>' => 'v1/<controller>/<action>',
'v1/<controller:[\w\-]+>/<action:[\w\-]+>' => 'v1/<controller>/<action>',
'v1//'=>'v1/',
“v1/”=>“v1/”,
为此:

'v1/flight/<id:[\d+\w+]>' => 'v1/flight/actionName',
'v1/flight/<action:\w+' => 'v1/flight/<action>',
“v1/flight/”=>“v1/flight/actionName”,

“v1/飞行/将改变我的响应这不是解决方案!关于#1?是的,我不知道如何在Q2 u中帮助你。我用queryparameter解决了这个问题,比如:但是它不友好!