Laravel路由注册-如何注册路由器
引言
無論是web頁面還是API接口,我們都繞不開的是路由地址,網絡資源定位也只能依賴于路由地址,它是銜接網絡請求與應用程序的橋梁。
本期為大家說一說用laravel注冊路由的那些必知必會的方法。
代碼時間
遵循編程慣例,首先實現一個 hello world 的示例。在路由文件 routes/web.php 內注冊一個get請求的路徑:
// routes/web.phpRoute::get('/', function () { return 'Hello, World!';});
web服務器配置正確后,我們就可以通過 http://www.example.com/ 這個路由地址直達該路由。因為路由內傳入了一個閉包,那么匿名函數的返回值,就會直接返回給 response,并顯示到頁面上。
大家注意,get這個靜態方法,是一個動詞,聲明了該請求的方式是 GET 請求。同樣地,我們可以注冊更多的類似路由,在路由文件內注冊更多的地址:
Route::get('/', function () { return view('welcome');});Route::get('about', function () { return view('about');});Route::get('products', function () { return view('products');});Route::get('services', function () { return view('services');});
上面的4個路由與 hello world 路由不同,我們做了修改,在閉包內返回了一個 view() 方法創建的視圖。這4條路由都是GET方式,如果使用其他HTTP標準的請求方式,可以如下注冊:
Route::post('/', function () {});Route::put('/', function () {});Route::delete('/', function () {});Route::any('/', function () {});Route::match(['get', 'post'], '/', function () {});
除了使用閉包返回數據,路由注冊也可以指向控制器方法,比如這樣:
Route::get('/', 'WelcomeController@index');
動態路由需要用戶提供更多個輸入參數,所以在規劃路由上,可以使用占位符接收路由地址的數據,比如這樣寫:
Route::get('users/{id}/friends', function ($id) { //});
位置參數 id 在正確傳入數值之后,就會傳遞到指定的方法內,在此例是 $id。傳遞多個位置參數也是毫無壓力的:
Route::get('users/{userId}/comments/{commentId}', function ($thisIsActuallyTheUserId,$thisisReallyTheCommentId) { //});
我們路由內使用的位置變量,和閉包形參并不相同,這樣也完全可以使用。但是并不推薦,前后保持一致性,有利于bug排查和調試,是最佳實踐。
有些位置參數,可以填可以不填,并不是強制要求的。或者說,如果不傳的話,給定一個默認值,經過數據處理后返回給用戶也是可以的。那么可以聲明該位置參數為可選參數,代碼如下:
Route::get('users/{id?}', function ($id = 'fallbackId') { //});
不僅于此,你還可以直接在路由上對傳入數據進行有效性判斷,把無效的數據攔截到路由層。約束條件支持正則表達式,比如這樣寫:
Route::get('users/{id}', function ($id) { //})->where('id', '[0-9]+');
此處 where 方法接收參數,指定參數 id 必須符合指定的正則表達式,也就是純數字。還可以指定為純字母的正則:
Route::get('users/{username}', function ($username) { //})->where('username', '[A-Za-z]+');
要求 username 傳入的參數只能是多個大小寫字母的組合。如果路由內聲明了多個位置參數,且都需要驗證,那么在 where 方法內傳入參數名 + 正則的數組即可:
Route::get('posts/{id}/{slug}', function ($id, $slug) { //})->where(['id' => '[0-9]+', 'slug' => '[A-Za-z]+']);
有了這樣的條件約束方法,你完全可以利用正則的強大的功能,組裝出更強勁的驗證。
寫在最后
本文初步介紹了laravel內注冊一條路由的方法,簡單地講解了位置參數的傳入和接收,以及在路由內添加正則表達式賦能的條件約束方式。都是基礎而且使用的,大家一定要牢固掌握。
Happy coding :-)
我是@程序員小助手,專注編程知識,圈子動態的IT領域原創作者
總結
以上是生活随笔為你收集整理的Laravel路由注册-如何注册路由器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 路由器静态ip怎么设置-路由器上网如何设
- 下一篇: 自己在家怎样轻松设置路由器 如何连接路由