yii 2のrestful apiルーティングの例


yii\rest\UrlRule yii\rest\UrlRuleを使用してコントローラのrestfulルーティングを自動的にマッピングするのは、簡単で迅速で、欠点は所定の方法名でビジネスを書かなければならないことです.
マッピングのルールは次のとおりです.もちろん、ソースコードを習慣に変更することができます.
public $patterns = [
    'PUT,PATCH {id}' => 'update',
    'DELETE {id}' => 'delete',
    'GET,HEAD {id}' => 'view',
    'POST' => 'create',
    'GET,HEAD' => 'index',
    '{id}' => 'options',
    '' => 'options',
];
HTTP動詞対応の方法名が制限されているほか、よく使われています.例えば、pluralizeはどんなに優雅なのか、単語の複数を自動的に解析することができます.laravelは一つ一つ書くので、かえって不便です.
'urlManager'   => [
    'enablePrettyUrl'     => true,
    'showScriptName'      => false,
    'enableStrictParsing' => true,
    'rules'               => [
        [
            'class'      => 'yii\rest\UrlRule',
            'controller' => [
                'v1/user',
                'v1/news',
                'routeAlias' => 'v1/box'
            ],
            'pluralize'  => true
        ],
    ]
]

カスタムルーティング
私のルートにはわざと複数のモードが使われていることに注意してください.しかし、いくつかの単語の複数は簡単にsを追加すればいいわけではありません.
'urlManager'   => [
    'enablePrettyUrl'     => true,
    'showScriptName'      => false,
    'enableStrictParsing' => true,
    'rules'               => [
        //    module           
        'GET /s'                 => '//index',
        'GET /s/'       => '//view',
        'POST /s'                => '//create',
        'PUT,PATCH /s/' => '//update',
        'DELETE /s/'    => '//delete',
        'OPTIONS /s'             => '//options',

        '/'              => '/',// normal
        '//' => '//',// module
        '/'                                          => 'site/default',// default route
    ]
]

もちろん、このような高度にダイナミックなルーティングもlaravelのように半静的に書くことができる.
'GET v1/children'                 => 'v1/child/index',
'GET v1/children/'       => 'v1/child/view',
'POST v1/children'                => 'v1/child/create',
'PUT,PATCH v1/children/' => 'v1/child/update',
'DELETE v1/children/'    => 'v1/child/delete',
'OPTIONS v1/children'             => 'v1/child/options',
laravelのように
Route::get("/v1/children", "ChildController@index");
Route::post("/v1/children", "ChildController@create");
Route::put("/v1/children/{uid}", "ChildController@update");
Route::patch("/v1/children/{uid}", "ChildController@update");
Route::delete("/v1/children/{uid}", "ChildController@delete");
Route::options("/v1/children", "ChildController@options");