电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

PHP laravel實現(xiàn)基本路由配置詳解

瀏覽:278日期:2022-06-06 09:15:02
目錄
  • 1.路由的基本介紹
  • 2.有效的路由方法
  • 3.路由重定向
  • 4.路由參數(shù)
  • 5.路由分組
  • 6.兜底路由
  • 7.頻率限制
  • 8.獲取當(dāng)前訪問路由屬性

在使用laravel之前我一直在使用thinkphp還有yii框架,這兩個框架也有路由這一說,但是都沒有用過。

Laravel的路由功能其實還是挺全的,也很優(yōu)雅~

下面來說正題:

1.路由的基本介紹

Laravel框架默認(rèn)為我們提供了兩個路由文件,在根目錄下的routes目錄下有web.php以及api.php。這些文件通過框架自動加載,相應(yīng)邏輯位于 app/Providers/RouteServiceProvider 類。routes/web.php 文件定義了 Web 界面的路由,這些路由被分配到了 web 中間件組,從而可以使用 Session 和 CSRF 保護等功能。routes/api.php 中的路由是無狀態(tài)的,這是因為被分配到了 api 中間件組。

一般情況下,我們都會使用web.php來開始定義路由。定義在 routes/web.php 中的路由可以通過在瀏覽器地址欄輸入相應(yīng)的 URL 進行訪問,例如,你可以通過 blog.test/user 訪問下面的路由:

Route::get("/user", "UsersController@index");

正如前面所提到的,定義在 routes/api.php 文件中的路由通過 app/Providers/RouteServiceProvider 的處理被嵌套在一個路由群組中, 在這個群組中,所有路由會被自動添加 /api 前綴,所以你不需要再到路由文件中為每個路由手動添加,你可以通過編輯 RouteServiceProvider 類來修改路由前綴以及其他的路由群組選項:

/**
     * Define the "api" routes for the application.
     *
     * These routes are typically stateless.
     *
     * @return void
     */
    protected function mapApiRoutes()
    {
Route::prefix("api")
    ->middleware("api")
    ->namespace($this->namespace)
    ->group(base_path("routes/api.php"));
    }

2.有效的路由方法

我們可以注冊路由來響應(yīng)任何 HTTP 請求動作:

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

3.路由重定向

如果你需要定義一個重定向到其他 URI 的路由,可以使用 Route::redirect 方法,該方法非常方便,以至于你不需要再定義額外的路由或控制器來執(zhí)行簡單的重定向邏輯:

Route::redirect("/here", "/there");

其中 here 表示原路由,there 表示重定向之后的路由。默認(rèn)情況下,Route::redirect 返回 302 狀態(tài)碼,你可以使用可選的第三個參數(shù)來自定義這個狀態(tài)碼:

Route::redirect("/here", "/there", 301);

你還可以使用 Route::permanentRedirect 方法來返回 301 狀態(tài)碼:

Route::permanentRedirect("/here", "/there");

4.路由參數(shù)

(1):必選參數(shù)

單個參數(shù)

Route::get("user/{id}", function ($id) {
    return "User " . $id;
});

多個參數(shù)

Route::get("posts/{post}/comments/{comment}", function ($postId, $commentId) {
    return $postId . "-" . $commentId;
});

(2):可選參數(shù)

Route::get("user/{name?}", function ($name = null) {
    return $name;
});

5.路由分組

(1):中間件路由分組

要給某個路由分組中定義的所有路由分配中間件,可以在定義分組之前使用 middleware 方法。中間件將會按照數(shù)組中定義的順序依次執(zhí)行:

Route::middleware(["first", "second"])->group(function () {
    Route::get("/", function () {
// Uses first & second Middleware
    });
  
    Route::get("user/profile", function () {
// Uses first & second Middleware
    });
});

(2):路由前綴

prefix 方法可以用來為分組中每個路由添加一個給定 URI 前綴,例如,你可以為分組中所有路由 URI 添加 admin 前綴 :

Route::prefix("admin")->group(function () {
    Route::get("users", function () {
// Matches The "/admin/users" URL
    });
});

6.兜底路由

使用 Route::fallback 方法可以定義一個當(dāng)所有其他路由都未能匹配請求 URL 時所執(zhí)行的路由。通常,未處理請求會通過 Laravel 的異常處理器自動渲染一個「404」頁面,不過,如果你在 routes/web.php 文件中定義了 fallback 路由的話,所有 web 中間件組中的路由都會應(yīng)用此路由作為兜底,當(dāng)然,如果需要的話,你還可以添加額外的中間件到此路由:

Route::fallback(function () {
    //
});

7.頻率限制

Laravel 自帶了一個中間件用于限制對應(yīng)用路由的訪問頻率。開始使用該功能之前,分配 throttle 中間件到某個路由或路由分組,throttle 中間件接收兩個參數(shù)用于判斷給定時間內(nèi)(單位:分鐘)的最大請求次數(shù)。例如,我們指定登錄用戶每分鐘只能訪問下面的分組路由 60 次:

Route::middleware("auth:api", "throttle:60,1")->group(function () {
    Route::get("/user", function () {
//
    });
});

超出訪問次數(shù)后,會返回 429 狀態(tài)碼并提示「Too many requests」。

動態(tài)頻率限制

此外,還可以基于 User 模型的屬性來動態(tài)設(shè)置最大請求次數(shù)。例如,如果 User 模型包含 rate_limit 屬性,就可以將其這個屬性名傳遞到 throttle 中間件,這樣就可以將屬性值作為計算最大請求次數(shù)的數(shù)據(jù)來源:

Route::middleware("auth:api", "throttle:rate_limit,1")->group(function () {
    Route::get("/user", function () {
//
    });
});

8.獲取當(dāng)前訪問路由屬性

你可以使用 Route 門面上的 current、currentRouteName 和 currentRouteAction 方法來訪問處理當(dāng)前輸入請求的路由信息:

// 獲取當(dāng)前路由實例
$route = Route::current();
// 獲取當(dāng)前路由名稱
$name = Route::currentRouteName();
// 獲取當(dāng)前路由action屬性
$action = Route::currentRouteAction();

到此這篇關(guān)于PHP laravel實現(xiàn)基本路由配置詳解的文章就介紹到這了,更多相關(guān)PHP laravel路由配置內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: PHP
主站蜘蛛池模板: 喷砂机厂家_自动喷砂机生产_新瑞自动化喷砂除锈设备 | 缝纫客| 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 电销卡_稳定企业大语音卡-归属地可选-世纪通信| 真石漆,山东真石漆,真石漆厂家,真石漆价格-山东新佳涂料有限公司 | 一点车讯-汽车网站,每天一点最新车讯! | 芝麻黑-芝麻黑石材厂家-永峰石业 | 水平垂直燃烧试验仪-灼热丝试验仪-漏电起痕试验仪-针焰试验仪-塑料材料燃烧检测设备-IP防水试验机 | 钢结构厂房造价_钢结构厂房预算_轻钢结构厂房_山东三维钢结构公司 | 自动气象站_农业气象站_超声波气象站_防爆气象站-山东万象环境科技有限公司 | 医疗仪器模块 健康一体机 多参数监护仪 智慧医疗仪器方案定制 血氧监护 心电监护 -朗锐慧康 | 轻型地埋电缆故障测试仪,频响法绕组变形测试仪,静荷式卧式拉力试验机-扬州苏电 | 阴离子聚丙烯酰胺价格_PAM_高分子聚丙烯酰胺厂家-河南泰航净水材料有限公司 | 气动绞车,山东气动绞车,气动绞车厂家-烟台博海石油机械有限公司 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | 银川美容培训-美睫美甲培训-彩妆纹绣培训-新娘化妆-学化妆-宁夏倍莱妮职业技能培训学校有限公司 临时厕所租赁_玻璃钢厕所租赁_蹲式|坐式厕所出租-北京慧海通 | 沉降天平_沉降粒度仪_液体比重仪-上海方瑞仪器有限公司 | 截齿|煤截齿|采煤机截齿|掘进机截齿|旋挖截齿-山东卓力截齿厂家报价 | 机床导轨_导轨板_滚轮导轨-上海旻佑精密机械有限公司 | 天助网 - 中小企业全网推广平台_生态整合营销知名服务商_天助网采购优选 | 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 | 一体化污水处理设备,一体化污水设备厂家-宜兴市福源水处理设备有限公司 | 威廉希尔WilliamHill·足球(中国)体育官方网站| 低温等离子清洗机(双气路进口)-嘉润万丰 | 加气混凝土砌块设备,轻质砖设备,蒸养砖设备,新型墙体设备-河南省杜甫机械制造有限公司 | 山东led显示屏,山东led全彩显示屏,山东LED小间距屏,临沂全彩电子屏-山东亚泰视讯传媒有限公司 | AGV无人叉车_激光叉车AGV_仓储AGV小车_AGV无人搬运车-南昌IKV机器人有限公司[官网] | 手持式线材张力计-套帽式风量罩-深圳市欧亚精密仪器有限公司 | 火锅加盟_四川成都火锅店加盟_中国火锅连锁品牌十强_朝天门火锅【官网】 | 行星搅拌机,双行星搅拌机,动力混合机,无锡米克斯行星搅拌机生产厂家 | 济南展厅设计施工_数字化展厅策划设计施工公司_山东锐尚文化传播有限公司 | nalgene洗瓶,nalgene量筒,nalgene窄口瓶,nalgene放水口大瓶,浙江省nalgene代理-杭州雷琪实验器材有限公司 | 搪瓷搅拌器,搪玻璃搅拌器,搪玻璃冷凝器_厂家-淄博越宏化工设备 | 嘉兴泰东园林景观工程有限公司_花箱护栏 | 明渠式紫外线杀菌器-紫外线消毒器厂家-定州市优威环保 | 成都软件开发_OA|ERP|CRM|管理系统定制开发_成都码邻蜀科技 | 塑料瓶罐_食品塑料瓶_保健品塑料瓶_调味品塑料瓶–东莞市富慷塑料制品有限公司 | 淘气堡_室内儿童乐园_户外无动力儿童游乐设备-高乐迪(北京) | 淄博不锈钢,淄博不锈钢管,淄博不锈钢板-山东振远合金科技有限公司 | 胶辊硫化罐_胶鞋硫化罐_硫化罐厂家-山东鑫泰鑫智能装备有限公司 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 碎石机设备-欧版反击破-欧版颚式破碎机(站)厂家_山东奥凯诺机械 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 |