SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Route 路由控制
范聖佑 Shengyou Fan
新北市樹林國⼩小 (2015/07/07)
適
⽤用
5.1
版
單元主題
• 什麼是 Route 路由?
• 使⽤用 Route 路由跟以往的作法有什麼不同?有什麼
好處?
• 如何設定 Laravel 的 Route?
• 依照⼯工作坊網站規劃書⽰示範如何設定 Route
Route	
  簡介
什麼是 Route (路由)?
• 把它想像成是應⽤用程式的⼤大⾨門管理員,每⼀一個
Request 都要通過管理員,符合正確的條件才可以送
到後⽅方應⽤用程式做處理,⽽而管理員的放⾏行原則,就
是依照應⽤用程式設定的 Route 規則來驗證
• 簡單來說,Route 就是應⽤用程式的⾨門禁規則,規則內
指定每⼀一個 Route 可以接受的動作 (GET、POST、
PATCH、DELETE) 、對應的網址 (uri) 及傳⼊入的參數
• Route 會從規則表裡由上⽽而下逐⼀一⽐比對,符合就會執
⾏行、若找不到就會回傳 404 (Not Found)
在使⽤用 Route 之前…
index.php
依 URL 對應⾄至各
php 檔案,找不
到檔案就是 404
Server
Request
Response
Client contact.php
search.php
posts.php
about.php GET
GET、POST
PATCH、DELETE
GET
GET、POST
GET
各 php 檔裡要⾃自⾏行處理可
接受的 HTTP 動作判斷
Laravel 的 Route 機制
Route
Controller
ModelView
index.php
Server
Request
Response
Client
app init
★ 參考說明:http://laravel-recipes.com/recipes/52/understanding-the-request-lifecycle
為什麼要⽤用 Route?
• HTTP 伺服器的 Document Root 指定在 public,透過
框架進⼊入點 (index.php) 統⼀一管理所有路由,增加程
式碼安全性
• 搭配 HTTP 伺服器的 rewirte 模組 (Apache 和 Nginx
都有對應),可以讓網站的網址變得更好看也更符合
RESTFul 語意
• 透過 Route 設計,應⽤用程式內所有可使⽤用的路徑就
⼀一⺫⽬目了然,增加團隊合作時的效率
• 在針對應⽤用程式除錯時,可以透過統⼀一的運作路徑
逐⼀一排除錯誤
Route	
  語法
★ 參考⽂文件:http://laravel.com/docs/5.1/routing
Laravel 的 Route 設定檔
• 由於 Route 處理所有 HTTP 相關的 Request,因此
Laravel 的 Route 規則設定檔根據功能放置在:
- app/Http/routes.php
設定 Route 動作
• 接收 GET (讀取)
• 接收 POST (寫⼊入)
• 接收 PATCH (更新)
• 接收 DELETE (刪除)
Route::get('{uri}',	
  function()	
  {	
  //	
  Closure	
  });
Route::post('{uri}',	
  function()	
  {	
  //	
  Closure	
  });
Route::patch('{uri}',	
  function()	
  {	
  //	
  Closure	
  });
Route::delete('{uri}',	
  function()	
  {	
  //	
  Closure	
  });
Route 接收參數
• 接收必要參數
• 接收選擇性參數
Route::get('posts/{id}',	
  function($id)	
  
{	
  
	
  	
  	
  	
  return	
  'Post:	
  '.$id;	
  
});
Route::get('users/{name?}',	
  function($name	
  =	
  'John')	
  
{	
  
	
  	
  	
  	
  return	
  'My	
  name	
  is	
  '.$name;	
  
});
限制參數格式
• 使⽤用 where 限制
• 使⽤用 pattern 限制
Route::get('posts/{id}',	
  function($id)	
  
{	
  
	
  	
  	
  	
  return	
  'Post:	
  '.$id;	
  
})	
  
-­‐>where('id',	
  '[0-­‐9]+');
Route::pattern('id',	
  '[0-­‐9]+');	
  
Route::get('posts/{id}',	
  function($id)	
  
{	
  
	
  	
  	
  	
  return	
  'Post:	
  '.$id;	
  
});
有哪些 routes?
• 當應⽤用程式愈寫愈⼤大、Route 也因此愈設定愈多時,
尤其綜合使⽤用很多 Route 特異功能時,如何知道⺫⽬目
前的應⽤用程式有哪些 routes 呢?
答:artisan 有⼀一個指令,可以將⺫⽬目前所有 routes
規則整理成表格後印出,透過這個表格就可以知道
到底有多少條規則被設定了
$	
  php	
  artisan	
  route:list
(列出⺫⽬目前所有的	
  route	
  規則)
artisan	
  route:list
• 印出所有 route 表格
- 呼叫這個指令,artisan 會把⺫⽬目前應⽤用程式內所有
的 route 規則整理成表格印出在畫⾯面上
- -­‐-­‐name={...} 依名字搜尋 route
- -­‐-­‐path={...} 依路徑搜尋 route
• 範例:
$	
  php	
  artisan	
  route:list
檢查 Route 設定
⽤用 artisan 指令列出⺫⽬目前的 Route 設定
進階	
  Route	
  設定
★ 參考⽂文件:http://laravel.com/docs/5.1/routing
進階 Route 設定
• Laravel 還可搭配進階技巧做出更多彈性的設計
- Named Routes
- Route 群組
‣ Route Prefixing
‣ Sub-Domain Routing
為 Route 命名
• 可以為每⼀一個 Route 取⼀一個名字
• 之後在 view 上⾯面就可以直接⽤用 helper 產⽣生 url
Route::get('post/{id}',	
  ['as'	
  =>	
  'posts.show',	
  function()	
  
{	
  
	
  	
  	
  	
  //	
  
}]);
<a	
  href="{{	
  route('posts.show',	
  $id)	
  }}"></a>
Route 群組
• 將⼀一系列有相同設定的 Route 規則組成⼀一個群組來
⼀一同設定,除了少打⼀一些程式碼外,在管理上也⽐比
較⽅方便
Route::group(['{function}'	
  =>	
  '{setting}'],	
  function()	
  
{	
  
	
  	
  	
  	
  Route::get('{uri}',	
  function()	
  
	
  	
  	
  	
  {	
  
	
  	
  	
  	
  });	
  
});
Route Prefixing
• 設定某些 Route 前都有共同的前置 uri
Route::group(['prefix'	
  =>	
  'admin'],	
  function()	
  
{	
  
	
  	
  	
  	
  Route::get('users',	
  function()	
  
	
  	
  	
  	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  //	
  實際上的	
  URL	
  會是	
  "/admin/users"	
  
	
  	
  	
  	
  });	
  
});
Sub-Domain Routing
• 限制 Route 只能在某個 Sub-Domain 才接受
Route::group(['domain'	
  =>	
  '{account}.myapp.com'],	
  function()	
  
{	
  
	
  	
  	
  	
  Route::get('user/{id}',	
  function($account,	
  $id)	
  
	
  	
  	
  	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  //	
  URL	
  若是	
  {account}.myapp.com	
  就會進⼊入這裡	
  
	
  	
  	
  	
  });	
  
});
設定專案	
  Route
專案網站架構圖
預定完成的 Route
直接回傳字串
• 在這個階段的實作裡,我們先直接在 Route 裡回傳
字串,先確認把通道打開即可
• 在瀏覽器裡預覽時,只要有看到字串顯⽰示在畫⾯面上
就表⽰示成功了
• 若發現打中⽂文是亂碼,是因為我們送出的內容裡沒
有編碼設定
Route::get('/',	
  function()	
  
{	
  
	
  	
  	
  	
  return	
  'home.index';	
  
});
Route 規則表格
設定完 routes.php 後,執⾏行 artisan route:list 檢查結果
存檔點
• 試著把現在已經可以運作的程式碼加⼊入版本控制內
• 流程提醒:
- working directory > staging area > commit
單元總結
• 在這個單元裡我們學到了些什麼?
- 什麼是 Route 以及使⽤用 Route 的好處
- Laravel 的 Route 語法
- 設定專案應⽤用程式的 Route
Q & A
歡迎提問討論

Weitere ähnliche Inhalte

Was ist angesagt?

啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定Shengyou Fan
 
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來Shengyou Fan
 
Composer 從入門到實戰
Composer 從入門到實戰Composer 從入門到實戰
Composer 從入門到實戰Shengyou Fan
 
Laravel introduction
Laravel introductionLaravel introduction
Laravel introductionSimon Funk
 
From Generator to Fiber the Road to Coroutine in PHP
From Generator to Fiber the Road to Coroutine in PHPFrom Generator to Fiber the Road to Coroutine in PHP
From Generator to Fiber the Road to Coroutine in PHPAlbert Chen
 
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料虎の穴 開発室
 
2021.laravelconf.tw.slides1
2021.laravelconf.tw.slides12021.laravelconf.tw.slides1
2021.laravelconf.tw.slides1LiviaLiaoFontech
 
Composer 經典食譜
Composer 經典食譜Composer 經典食譜
Composer 經典食譜Shengyou Fan
 
Laravel presentation
Laravel presentationLaravel presentation
Laravel presentationToufiq Mahmud
 
Lecture 2_ Intro to laravel.pptx
Lecture 2_ Intro to laravel.pptxLecture 2_ Intro to laravel.pptx
Lecture 2_ Intro to laravel.pptxSaziaRahman
 
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南Shengyou Fan
 
Laravel development (Laravel History, Environment Setup & Laravel Installatio...
Laravel development (Laravel History, Environment Setup & Laravel Installatio...Laravel development (Laravel History, Environment Setup & Laravel Installatio...
Laravel development (Laravel History, Environment Setup & Laravel Installatio...Dilouar Hossain
 
Laravel - Speaking eloquent eloquently
Laravel - Speaking eloquent eloquentlyLaravel - Speaking eloquent eloquently
Laravel - Speaking eloquent eloquentlyLaravel Nigeria
 
What-is-Laravel-23-August-2017.pptx
What-is-Laravel-23-August-2017.pptxWhat-is-Laravel-23-August-2017.pptx
What-is-Laravel-23-August-2017.pptxAbhijeetKumar456867
 
Projects In Laravel : Learn Laravel Building 10 Projects
Projects In Laravel : Learn Laravel Building 10 ProjectsProjects In Laravel : Learn Laravel Building 10 Projects
Projects In Laravel : Learn Laravel Building 10 ProjectsSam Dias
 

Was ist angesagt? (20)

啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
 
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
 
Composer 從入門到實戰
Composer 從入門到實戰Composer 從入門到實戰
Composer 從入門到實戰
 
使用者認證
使用者認證使用者認證
使用者認證
 
Laravel Tutorial PPT
Laravel Tutorial PPTLaravel Tutorial PPT
Laravel Tutorial PPT
 
Laravel 101
Laravel 101Laravel 101
Laravel 101
 
Laravel introduction
Laravel introductionLaravel introduction
Laravel introduction
 
From Generator to Fiber the Road to Coroutine in PHP
From Generator to Fiber the Road to Coroutine in PHPFrom Generator to Fiber the Road to Coroutine in PHP
From Generator to Fiber the Road to Coroutine in PHP
 
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料
 
2021.laravelconf.tw.slides1
2021.laravelconf.tw.slides12021.laravelconf.tw.slides1
2021.laravelconf.tw.slides1
 
Composer 經典食譜
Composer 經典食譜Composer 經典食譜
Composer 經典食譜
 
Laravel presentation
Laravel presentationLaravel presentation
Laravel presentation
 
Lecture 2_ Intro to laravel.pptx
Lecture 2_ Intro to laravel.pptxLecture 2_ Intro to laravel.pptx
Lecture 2_ Intro to laravel.pptx
 
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
 
Laravel development (Laravel History, Environment Setup & Laravel Installatio...
Laravel development (Laravel History, Environment Setup & Laravel Installatio...Laravel development (Laravel History, Environment Setup & Laravel Installatio...
Laravel development (Laravel History, Environment Setup & Laravel Installatio...
 
Laravel - Speaking eloquent eloquently
Laravel - Speaking eloquent eloquentlyLaravel - Speaking eloquent eloquently
Laravel - Speaking eloquent eloquently
 
Spring Framework勉強会
Spring  Framework勉強会Spring  Framework勉強会
Spring Framework勉強会
 
What-is-Laravel-23-August-2017.pptx
What-is-Laravel-23-August-2017.pptxWhat-is-Laravel-23-August-2017.pptx
What-is-Laravel-23-August-2017.pptx
 
Laravel Introduction
Laravel IntroductionLaravel Introduction
Laravel Introduction
 
Projects In Laravel : Learn Laravel Building 10 Projects
Projects In Laravel : Learn Laravel Building 10 ProjectsProjects In Laravel : Learn Laravel Building 10 Projects
Projects In Laravel : Learn Laravel Building 10 Projects
 

Andere mochten auch

Package 安裝與使用
Package 安裝與使用Package 安裝與使用
Package 安裝與使用Shengyou Fan
 
開發環境建置
開發環境建置開發環境建置
開發環境建置Shengyou Fan
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎Shengyou Fan
 
Migrations 與 Schema 操作
Migrations 與 Schema 操作Migrations 與 Schema 操作
Migrations 與 Schema 操作Shengyou Fan
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 SeedingShengyou Fan
 
Model & Seeding整合
Model & Seeding整合Model & Seeding整合
Model & Seeding整合Shengyou Fan
 
Schema & Migration操作
Schema & Migration操作Schema & Migration操作
Schema & Migration操作Shengyou Fan
 
使用 Eloquent ORM
使用 Eloquent ORM使用 Eloquent ORM
使用 Eloquent ORMShengyou Fan
 
開發流程與工具介紹
開發流程與工具介紹開發流程與工具介紹
開發流程與工具介紹Shengyou Fan
 
應用程式佈署
應用程式佈署應用程式佈署
應用程式佈署Shengyou Fan
 
專案啟動與設定
專案啟動與設定專案啟動與設定
專案啟動與設定Shengyou Fan
 

Andere mochten auch (20)

Package 安裝與使用
Package 安裝與使用Package 安裝與使用
Package 安裝與使用
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 
Migrations 與 Schema 操作
Migrations 與 Schema 操作Migrations 與 Schema 操作
Migrations 與 Schema 操作
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 Seeding
 
工作坊簡介
工作坊簡介工作坊簡介
工作坊簡介
 
CRUD 綜合運用
CRUD 綜合運用CRUD 綜合運用
CRUD 綜合運用
 
驗證與訊息
驗證與訊息驗證與訊息
驗證與訊息
 
整合 Open ID
整合 Open ID整合 Open ID
整合 Open ID
 
工作坊總結
工作坊總結工作坊總結
工作坊總結
 
Model & Seeding整合
Model & Seeding整合Model & Seeding整合
Model & Seeding整合
 
Schema & Migration操作
Schema & Migration操作Schema & Migration操作
Schema & Migration操作
 
使用 Eloquent ORM
使用 Eloquent ORM使用 Eloquent ORM
使用 Eloquent ORM
 
Route 機制
Route 機制Route 機制
Route 機制
 
CRUD 綜合應用
CRUD 綜合應用CRUD 綜合應用
CRUD 綜合應用
 
開發流程與工具介紹
開發流程與工具介紹開發流程與工具介紹
開發流程與工具介紹
 
使用者認證
使用者認證使用者認證
使用者認證
 
應用程式佈署
應用程式佈署應用程式佈署
應用程式佈署
 
專案啟動與設定
專案啟動與設定專案啟動與設定
專案啟動與設定
 
課程簡介
課程簡介課程簡介
課程簡介
 

Ähnlich wie Route 路由控制

View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎Shengyou Fan
 
開發環境建置
開發環境建置開發環境建置
開發環境建置Shengyou Fan
 
專案啟動與環境設定
專案啟動與環境設定專案啟動與環境設定
專案啟動與環境設定Shengyou Fan
 
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletJustin Lin
 
Laravel II - Developer Student Clubs NCU.pdf
Laravel II - Developer Student Clubs NCU.pdfLaravel II - Developer Student Clubs NCU.pdf
Laravel II - Developer Student Clubs NCU.pdfNCUDSC
 
2021.laravelconf.tw.slides3
2021.laravelconf.tw.slides32021.laravelconf.tw.slides3
2021.laravelconf.tw.slides3LiviaLiaoFontech
 
From Java Stream to Java DataFrame
From Java Stream to Java DataFrameFrom Java Stream to Java DataFrame
From Java Stream to Java DataFrameChen-en Lu
 
COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南Shengyou Fan
 
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4Daniel Chou
 
Rails talk-5
Rails talk-5Rails talk-5
Rails talk-5Eddie Lee
 
Raising The MySQL Bar-Manyi Lu
Raising The MySQL Bar-Manyi LuRaising The MySQL Bar-Manyi Lu
Raising The MySQL Bar-Manyi Lu郁萍 王
 
Rest Ruby On Rails
Rest Ruby On RailsRest Ruby On Rails
Rest Ruby On Railsshaokun
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Justin Lin
 
Rest与面向资源的web开发
Rest与面向资源的web开发Rest与面向资源的web开发
Rest与面向资源的web开发topgeek
 
Migrations 與 Schema操作
Migrations 與 Schema操作Migrations 與 Schema操作
Migrations 與 Schema操作Shengyou Fan
 
Spring mvc
Spring mvcSpring mvc
Spring mvcpepsixp
 

Ähnlich wie Route 路由控制 (20)

Route路由控制
Route路由控制Route路由控制
Route路由控制
 
使用 Controller
使用 Controller使用 Controller
使用 Controller
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 
專案啟動與環境設定
專案啟動與環境設定專案啟動與環境設定
專案啟動與環境設定
 
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
 
Rails 初探
Rails 初探Rails 初探
Rails 初探
 
Laravel II - Developer Student Clubs NCU.pdf
Laravel II - Developer Student Clubs NCU.pdfLaravel II - Developer Student Clubs NCU.pdf
Laravel II - Developer Student Clubs NCU.pdf
 
2021.laravelconf.tw.slides3
2021.laravelconf.tw.slides32021.laravelconf.tw.slides3
2021.laravelconf.tw.slides3
 
From Java Stream to Java DataFrame
From Java Stream to Java DataFrameFrom Java Stream to Java DataFrame
From Java Stream to Java DataFrame
 
COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南
 
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4
 
Rails talk-5
Rails talk-5Rails talk-5
Rails talk-5
 
Raising The MySQL Bar-Manyi Lu
Raising The MySQL Bar-Manyi LuRaising The MySQL Bar-Manyi Lu
Raising The MySQL Bar-Manyi Lu
 
Rest Ruby On Rails
Rest Ruby On RailsRest Ruby On Rails
Rest Ruby On Rails
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
 
Rest与面向资源的web开发
Rest与面向资源的web开发Rest与面向资源的web开发
Rest与面向资源的web开发
 
Migrations 與 Schema操作
Migrations 與 Schema操作Migrations 與 Schema操作
Migrations 與 Schema操作
 
工作坊總結
工作坊總結工作坊總結
工作坊總結
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 

Mehr von Shengyou Fan

[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式Shengyou Fan
 
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...Shengyou Fan
 
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀Shengyou Fan
 
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能Shengyou Fan
 
How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023Shengyou Fan
 
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀Shengyou Fan
 
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台Shengyou Fan
 
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇Shengyou Fan
 
Using the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your DatabaseUsing the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your DatabaseShengyou Fan
 
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具Shengyou Fan
 
[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園Shengyou Fan
 
初探 Kotlin Multiplatform
初探 Kotlin Multiplatform初探 Kotlin Multiplatform
初探 Kotlin MultiplatformShengyou Fan
 
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率Shengyou Fan
 
[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南Shengyou Fan
 
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用Shengyou Fan
 
老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具Shengyou Fan
 
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS AggregatorShengyou Fan
 
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON APIShengyou Fan
 
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin ServerlessShengyou Fan
 
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置Shengyou Fan
 

Mehr von Shengyou Fan (20)

[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
 
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
 
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
 
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
 
How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023
 
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
 
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
 
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
 
Using the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your DatabaseUsing the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your Database
 
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
 
[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園
 
初探 Kotlin Multiplatform
初探 Kotlin Multiplatform初探 Kotlin Multiplatform
初探 Kotlin Multiplatform
 
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
 
[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南
 
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
 
老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具
 
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
 
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
 
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
 
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
 

Route 路由控制

  • 1. Route 路由控制 范聖佑 Shengyou Fan 新北市樹林國⼩小 (2015/07/07) 適 ⽤用 5.1 版
  • 2. 單元主題 • 什麼是 Route 路由? • 使⽤用 Route 路由跟以往的作法有什麼不同?有什麼 好處? • 如何設定 Laravel 的 Route? • 依照⼯工作坊網站規劃書⽰示範如何設定 Route
  • 4. 什麼是 Route (路由)? • 把它想像成是應⽤用程式的⼤大⾨門管理員,每⼀一個 Request 都要通過管理員,符合正確的條件才可以送 到後⽅方應⽤用程式做處理,⽽而管理員的放⾏行原則,就 是依照應⽤用程式設定的 Route 規則來驗證 • 簡單來說,Route 就是應⽤用程式的⾨門禁規則,規則內 指定每⼀一個 Route 可以接受的動作 (GET、POST、 PATCH、DELETE) 、對應的網址 (uri) 及傳⼊入的參數 • Route 會從規則表裡由上⽽而下逐⼀一⽐比對,符合就會執 ⾏行、若找不到就會回傳 404 (Not Found)
  • 5. 在使⽤用 Route 之前… index.php 依 URL 對應⾄至各 php 檔案,找不 到檔案就是 404 Server Request Response Client contact.php search.php posts.php about.php GET GET、POST PATCH、DELETE GET GET、POST GET 各 php 檔裡要⾃自⾏行處理可 接受的 HTTP 動作判斷
  • 6. Laravel 的 Route 機制 Route Controller ModelView index.php Server Request Response Client app init ★ 參考說明:http://laravel-recipes.com/recipes/52/understanding-the-request-lifecycle
  • 7. 為什麼要⽤用 Route? • HTTP 伺服器的 Document Root 指定在 public,透過 框架進⼊入點 (index.php) 統⼀一管理所有路由,增加程 式碼安全性 • 搭配 HTTP 伺服器的 rewirte 模組 (Apache 和 Nginx 都有對應),可以讓網站的網址變得更好看也更符合 RESTFul 語意 • 透過 Route 設計,應⽤用程式內所有可使⽤用的路徑就 ⼀一⺫⽬目了然,增加團隊合作時的效率 • 在針對應⽤用程式除錯時,可以透過統⼀一的運作路徑 逐⼀一排除錯誤
  • 9. Laravel 的 Route 設定檔 • 由於 Route 處理所有 HTTP 相關的 Request,因此 Laravel 的 Route 規則設定檔根據功能放置在: - app/Http/routes.php
  • 10. 設定 Route 動作 • 接收 GET (讀取) • 接收 POST (寫⼊入) • 接收 PATCH (更新) • 接收 DELETE (刪除) Route::get('{uri}',  function()  {  //  Closure  }); Route::post('{uri}',  function()  {  //  Closure  }); Route::patch('{uri}',  function()  {  //  Closure  }); Route::delete('{uri}',  function()  {  //  Closure  });
  • 11. Route 接收參數 • 接收必要參數 • 接收選擇性參數 Route::get('posts/{id}',  function($id)   {          return  'Post:  '.$id;   }); Route::get('users/{name?}',  function($name  =  'John')   {          return  'My  name  is  '.$name;   });
  • 12. 限制參數格式 • 使⽤用 where 限制 • 使⽤用 pattern 限制 Route::get('posts/{id}',  function($id)   {          return  'Post:  '.$id;   })   -­‐>where('id',  '[0-­‐9]+'); Route::pattern('id',  '[0-­‐9]+');   Route::get('posts/{id}',  function($id)   {          return  'Post:  '.$id;   });
  • 13. 有哪些 routes? • 當應⽤用程式愈寫愈⼤大、Route 也因此愈設定愈多時, 尤其綜合使⽤用很多 Route 特異功能時,如何知道⺫⽬目 前的應⽤用程式有哪些 routes 呢? 答:artisan 有⼀一個指令,可以將⺫⽬目前所有 routes 規則整理成表格後印出,透過這個表格就可以知道 到底有多少條規則被設定了
  • 14. $  php  artisan  route:list (列出⺫⽬目前所有的  route  規則)
  • 15. artisan  route:list • 印出所有 route 表格 - 呼叫這個指令,artisan 會把⺫⽬目前應⽤用程式內所有 的 route 規則整理成表格印出在畫⾯面上 - -­‐-­‐name={...} 依名字搜尋 route - -­‐-­‐path={...} 依路徑搜尋 route • 範例: $  php  artisan  route:list
  • 16. 檢查 Route 設定 ⽤用 artisan 指令列出⺫⽬目前的 Route 設定
  • 17. 進階  Route  設定 ★ 參考⽂文件:http://laravel.com/docs/5.1/routing
  • 18. 進階 Route 設定 • Laravel 還可搭配進階技巧做出更多彈性的設計 - Named Routes - Route 群組 ‣ Route Prefixing ‣ Sub-Domain Routing
  • 19. 為 Route 命名 • 可以為每⼀一個 Route 取⼀一個名字 • 之後在 view 上⾯面就可以直接⽤用 helper 產⽣生 url Route::get('post/{id}',  ['as'  =>  'posts.show',  function()   {          //   }]); <a  href="{{  route('posts.show',  $id)  }}"></a>
  • 20. Route 群組 • 將⼀一系列有相同設定的 Route 規則組成⼀一個群組來 ⼀一同設定,除了少打⼀一些程式碼外,在管理上也⽐比 較⽅方便 Route::group(['{function}'  =>  '{setting}'],  function()   {          Route::get('{uri}',  function()          {          });   });
  • 21. Route Prefixing • 設定某些 Route 前都有共同的前置 uri Route::group(['prefix'  =>  'admin'],  function()   {          Route::get('users',  function()          {                  //  實際上的  URL  會是  "/admin/users"          });   });
  • 22. Sub-Domain Routing • 限制 Route 只能在某個 Sub-Domain 才接受 Route::group(['domain'  =>  '{account}.myapp.com'],  function()   {          Route::get('user/{id}',  function($account,  $id)          {                  //  URL  若是  {account}.myapp.com  就會進⼊入這裡          });   });
  • 26. 直接回傳字串 • 在這個階段的實作裡,我們先直接在 Route 裡回傳 字串,先確認把通道打開即可 • 在瀏覽器裡預覽時,只要有看到字串顯⽰示在畫⾯面上 就表⽰示成功了 • 若發現打中⽂文是亂碼,是因為我們送出的內容裡沒 有編碼設定 Route::get('/',  function()   {          return  'home.index';   });
  • 27. Route 規則表格 設定完 routes.php 後,執⾏行 artisan route:list 檢查結果
  • 29. 單元總結 • 在這個單元裡我們學到了些什麼? - 什麼是 Route 以及使⽤用 Route 的好處 - Laravel 的 Route 語法 - 設定專案應⽤用程式的 Route