標籤:
前幾天忙了,然後快兩個星期沒有發部落格。今天正式迴歸。哈哈
1. 路由
說到路由當時學的時候給我疑惑了幾天、。沒有仔細看文檔。然後一臉蒙蔽的去用 postman[Google外掛程式] 測試路由方法。然後就很奇怪 composer 下載下來的 laravel 為什麼在 postman 裡面測試的只有 get 路由方法能使用,類似這樣 :
laravel 的路由在app/Http/routes.php 這個檔案(中文文檔:點我)
在routes.php裡面添加了一個get方法
1 Route::get(‘test‘,function(){2 return ‘123‘;3 });
然後在postman裡面測試的時候能輸出 123;
然後我再次添加post方法。發現在postman裡面測試的時候會報錯。
1 Route::post(‘/test‘,function(){2 return 123;3 });
後來加了laravel學院的群問了下才知道,(laravel 5.2.26之後的所有路由預設走web中介軟體,所以沒有token肯定訪問不了) 通俗的說就是防止CSRF(跨站)攻擊。如果想要用postman測試的話就要去關閉CSRF。要麼就用表單測試避免攻擊。我就用官方文檔給的表單測試這些路由...
1 Route::get(‘test‘,function(){ 2 $csrf_field = csrf_field(); 3 $html = <<<GET 4 <form method="POST" action="/test"> 5 {$csrf_field} 6 <input type="submit" value="test"/> 7 </form> 8 GET; 9 return $html;10 });11 Route::post(‘test‘,function(){12 return ‘Success‘;13 });
這個就能在瀏覽器中看到了(忽略 標籤 ,懶得打馬了)
metch / any 路由都差不多。然後其他的幾個路由我也就不去測試了。表單傳遞方式只有get和post了。如果想看其他路由的話。目前只知道--- 去關閉csrf 用postman看效果。 如何關閉上面的 csrf 連結有介紹。或者 app/Http/Kernel.php 注釋掉第31行
1 \App\Http\Middleware\VerifyCsrfToken::class, //注釋我
1.1. 路由參數
1 Route::get(‘posts/{post}/comments/{comment}‘, function ($postId, $commentId) {2 return $postId.$commentId;3 });
選擇性參數:
1 Route::get(‘posts/{post}/comments/{comment?}‘, function ($postId, $commentId=null) {2 return ‘$postId----‘.$postId.‘ $commentId------‘.$commentId;3 });
這個意思差不多就是以postId 接收{post}參數。然後選擇性參數comment 可以為空白或者不為空白。然後輸出對應的參數:下面這個例子就是把這個可選的參數沒有給他設定值。然後輸出的時候就不會有參數出來。若設定了即反之。{post}不能設定為選擇性參數,如果設定了的話,便報錯、因為它真的不知道 comments 後面的是不是值。
正則約束參數:
1 Route::get(‘user/{id}/{name}‘, function ($id, $name) {2 return $id.‘---‘.$name;3 })->where([‘id‘ => ‘[0-9]+‘, ‘name‘ => ‘[a-z]+‘]);
這個輸入的參數 id 必須為數字。name 必須為 a-z 或者多個 a-z+ --- 即正則約束這倆參數。
輸出:
部分內容參考:Laravel 5.2 中文文檔
學渣也要搞 laravel(2)—— HTTP路由[1]篇