一、路由
路由其實就是瀏覽器裡用來發http請求的指令,很多api的功能其實就是透過URL來發送請求的。
http請求方式和回應是基礎課,但是內容不少,要先研究好。
Laravel的路由和其他框架有所不同,需要手動逐個定制,好處在於功能強大,靈活,易於管理。
3種基本方式
第一種
就是Route::get('路徑', function(){…});這種形式,你可以根據需要把get換成post, put, delete等各種請求方式;這種寫法最常見,也是最推薦的;
路由後面可以用閉包(匿名的函數)直接執行一段程式碼,這個是很多框架沒有的,實際中不太可能把業務碼寫到這個小小的閉包中,而是放到控制器中,因此最常見的寫法是Route::get('路徑', xxxController@action);
路由的閉包函數最多的用處是用來測試某個功能或程式碼,即寫即用,非常方便,我通常會保留一個Route::get('test', function(){…});做測試。
專案中往往路由很多,一個一個寫有些人覺得慢了。有些CRUD是非常標準化的,於是就有了所謂的Restful路由(控制器)。
第二種:
Route::resource('posts','PostsController');
寫一個這樣的路由,其實產生7個帶路由名稱的路由,這7個路由的路徑形式是按照restful標準來製定的,所以有又叫做rest路由;但這個路由有個限制,就是在對應的控制器中,除了rest對應的7個方法外,其他方法如果要訪問,要在Restful路由前面定義一個路由訪問它。
第三種:
叫做控制路由,又叫隱式路由:
Route::controller(‘foo’, ‘FooController’);
這種寫法很靈活,用魔術方法在方法名稱上設定http請求方式,這對於一些api式的請求很方便。
給隱式路由取名字需要注意,因為它不是逐個寫路由的,方法如下:
<code>Route::controller(<span>'users'</span>, <span>'UserController'</span>, [ <span>'anyLogin'</span> => <span>'user.login'</span>, ]);</code>
前面是方法名,後面是路由名稱;
路由名稱
話說回來,為路由命名有什麼用呢?有用,因為路由(url)會在大量的視圖檔案中使用,有了路由名稱,就可以解耦,可以任意修改url,而不會影響視圖中的url;
路由參數
我們通常說的路由參數,一般看起來像這樣index.php?user=ooo&psw=xxx; 但在Laravel看來,這種明文的方式比較醜且不安全。所以它的寫法就成了這樣:
<code>Route::get(<span>'user/{name}'</span>, <span><span>function</span><span>(<span>$name</span>)</span> {</span><span>//可以直接使用$name</span> })</code>
這個參數值如果是字串,不能跟其他路由名稱一樣,系統會優先路由,這樣就取不到值了。
關於取值這塊,首先其實是可以直接傳值,另外也可以透過物件方法取值,官網說明比較坑,