怎么在yii2中實現(xiàn)restful api路由?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
目前創(chuàng)新互聯(lián)已為上千家的企業(yè)提供了網(wǎng)站建設、域名、網(wǎng)頁空間、網(wǎng)站托管、服務器托管、企業(yè)網(wǎng)站設計、鐵山港網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。yii\rest\UrlRule
使用yii\rest\UrlRule來自動映射控制器的 restful 路由,簡單快捷,缺點是必須得按規(guī)定好的方法名去寫業(yè)務。
映射的規(guī)則如下,當然,你可以修改源碼為你的習慣:
public $patterns = [ 'PUT,PATCH {id}' => 'update', 'DELETE {id}' => 'delete', 'GET,HEAD {id}' => 'view', 'POST' => 'create', 'GET,HEAD' => 'index', '{id}' => 'options', '' => 'options', ];
除了被限制了HTTP動詞對應的方法名外,其他都很好用,比如pluralize是多么的優(yōu)雅啊,可以自動解析單詞的復數(shù),laravel的話要一個個的去寫,反而有些不方便了
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'enableStrictParsing' => true, 'rules' => [ [ 'class' => 'yii\rest\UrlRule', 'controller' => [ 'v1/user', 'v1/news', 'routeAlias' => 'v1/box' ], 'pluralize' => true ], ] ]
自定義路由
注意我路由里很刻意的用了復數(shù)模式,但很雞肋,因為一些單詞的復數(shù)并不是簡單的加個 s 就可以了。
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'enableStrictParsing' => true, 'rules' => [ // 利用 module 做個版本號也是可以的 'GET <module:(v1|v2)>/<controller:\w+>s' => '<module>/<controller>/index', 'GET <module:(v1|v2)>/<controller:\w+>s/<uid:\d+>' => '<module>/<controller>/view', 'POST <module:(v1|v2)>/<controller:\w+>s' => '<module>/<controller>/create', 'PUT,PATCH <module:(v1|v2)>/<controller:\w+>s/<uid:\d+>' => '<module>/<controller>/update', 'DELETE <module:(v1|v2)>/<controller:\w+>s/<uid:\d+>' => '<module>/<controller>/delete', 'OPTIONS <module:(v1|v2)>/<controller:\w+>s' => '<module>/<controller>/options', '<controller:\w+>/<action:\w+>' => '<controller>/<action>',// normal '<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>',// module '/' => 'site/default',// default route ] ]
當然,這種高度動態(tài)的路由也可以寫的像laravel一樣半靜態(tài)。
'GET v1/children' => 'v1/child/index', 'GET v1/children/<uid:\d+>' => 'v1/child/view', 'POST v1/children' => 'v1/child/create', 'PUT,PATCH v1/children/<uid:\d+>' => 'v1/child/update', 'DELETE v1/children/<uid:\d+>' => '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");
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網(wǎng)站建設公司,的支持。
當前文章:怎么在yii2中實現(xiàn)restfulapi路由-創(chuàng)新互聯(lián)
當前鏈接:http://jinyejixie.com/article20/csdsco.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站改版、企業(yè)網(wǎng)站制作、小程序開發(fā)、虛擬主機、域名注冊
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)