什麼是回應
控制器或路由必須向使用者的瀏覽器回傳某種回應。 Laravel 提供簡潔的機制,讓字串、陣列、view、redirect、JSON 等各種形式的回應都能輕鬆傳回。基本回應
回傳字串
最簡單的回應是回傳字串。 Laravel 會自動轉為合適的 HTTP 回應。回傳陣列
回傳陣列時,Laravel 會自動轉為 JSON 形式回應。將 Eloquent model 或 collection 直接 return 時也會自動轉為 JSON。因此常被用來輕鬆製作 API。
回傳 Eloquent model
Response 物件
使用response() helper,可回傳指定 HTTP 狀態碼與 header 的詳細回應。
response() 第 1 個引數是回應 body,第 2 個引數是 HTTP 狀態碼。
常用 HTTP 狀態碼
View 回應
要從控制器顯示 Blade 樣板,使用view()。
這是 Web 應用中最常見的回應。
view() 第 1 個引數是 view 名稱,第 2 個引數是要傳給 view 的資料陣列。
以 response()->view() 精細控制
若要同時指定狀態碼或 header,可使用 response()->view()。
Redirect
基本 redirect
redirect() helper 會回傳 redirect 回應。
常用於表單送出後導向另一頁面。
導向具名路由
使用route() 函式,可不必寫 URL,改以路由名稱指定 redirect 目標。
URL 變更也不需修改,因此善用具名路由是最佳實務。
回到前一頁
用back() 可回到使用者剛才所在的頁面。
常用於驗證失敗時的 redirect。
附帶 flash 訊息的 redirect
使用with() 可在 redirect 時附帶 session 訊息。
方便在表單送出成功後顯示訊息。
JSON 回應
製作 API 時,用response()->json() 回傳 JSON 回應。
會自動設定 Content-Type: application/json header。
單純 return 陣列或 Eloquent model 也會變成 JSON 回應,但使用
response()->json() 可以更細緻地控制狀態碼與 header。回應 Header
以header() 方法可為回應加上 HTTP header。
withHeaders()。
實務範例:在控制器中的分工
以下整理依用途分工使用回應的範例。1
定義路由
2
控制器的實作
後續步驟
Validation
在回傳回應前,確認以驗證檢查輸入資料的方式。