Laravel Request 概念

更新於 發佈於 閱讀時間約 7 分鐘

今天要來分享關於 Laravel Request 概念,Request 代表了來自客戶端(瀏覽器)的HTTP請求。這個類型的物件允許您輕鬆地訪問HTTP請求中的各種數據,例如表單數據、路由參數、Cookie、HTTP標頭等。 現在我們來定義及應用吧!

關於 Request

在 Laravel 中,Request 是處理 HTTP 請求的類別,可以用來取得、驗證、處理 HTTP 請求資料。而使用 Request 可以更輕鬆地取得 HTTP 請求資料,讓我們不再需要透過 PHP 原生的 $_GET、$_POST、$_COOKIE、$_FILES 等全域變數來取得資料。Request 的使用也可以讓我們更容易地驗證請求資料、處理表單資料等等。也是 Laravel 中的重要元件,幾乎所有的控制器都會使用 Request 來取得 HTTP 請求資料。

Request 實際應用

Request 透過 Dependency Injection(依賴注入)的方式注入到控制器(Controller)中,使用方法非常簡單。以下是一個使用 Request 取得表單資料的範例:

<?php

namespace App\\Http\\Controllers;

use Illuminate\\Http\\Request;

class UserController extends Controller
{
public function store(Request $request) <---依賴注入
{
$name = $request->input('name');
$email = $request->input('email');
.....
}
}

在上面的範例中,我們可以看到 Request 透過依賴注入的方式被注入到 store 方法中,我們可以透過 $request 變數來取得表單資料。範例中使用的 input 方法可以用來取得表單欄位的值,我們透過$request->input('name') 取得名為 name 的欄位的值。

而當使用input()這個方法取得請求的值時,也可使用另一種取得方式,改用 query()這個方法。

// 這樣的寫法可以取得名為 name 的欄位的值。
$name = $request->query('name');

你也可以將預設值作為 query()的第二參數傳入,那樣的話,如果找不到值就會回傳預設值,舉例如下

// 如果找不到名為name的值,則預設為空字串​
$name = $request->query('name', '');

你也可以直接呼叫 query() 而不傳入任何參數,這將會回傳所有的查詢字串輸入項的值,並以陣列的形式

// 不傳入任何參數名,直接傳回陣列方式
$data = $request->query();

而明白依賴注入的行為後,我們也可以在路由檔 route.php Closure 直接使用 Request 類別,服務容器也會自動的在執行時把進來的請求自動注入進來,直接在路由檔裡面做$request處理 (但基本我任職的公司都不太這樣寫,不易管理檔案程式碼職責)。

use Illuminate\Http\Request;  //引入Class


Route::get('/',function (Request $request) {
// todo
});

而 Laravel 對於HTTP 請求資料處理,也提供許多$request 參數應用,以下列出常見的參數應用供參考

  1. 獲取請求的輸入數據:
  • $request->all() : 獲取請求中的所有輸入數據,包括 GET 和 POST 數據。
  • $request->input('key') : 獲取特定鍵名('key')的輸入數據。
  • $request->only(['key1', 'key2']) : 獲取指定鍵名的輸入數據,可以傳遞一個鍵名數組。
  • $request->except(['key1', 'key2']) : 獲取除指定鍵名之外的所有輸入數據。

2. 獲取請求方法和路徑:

  • $request->method() : 獲取請求的 HTTP 方法(GET、POST、PUT、DELETE 等)。
  • $request->path() : 獲取請求的路徑(不包括域名)。
  1. 獲取請求頭部信息 :
  • $request->header('headerName') : 獲取特定請求頭的值。
  1. 獲取請求的 URL :
  • $request->url() : 獲取完整的請求 URL。
  • $request->fullUrl() : 獲取完整的請求 URL,包括查詢參數。
  • $request->getQueryString() : 獲取查詢字符串部分。
  1. 獲取請求的 Cookie 數據
  • $request->cookie('cookieName') : 獲取特定 Cookie 的值。
  1. 獲取請求的文件上傳 :
  • $request->file('fileInputName') : 獲取上傳的文件,其中 'fileInputName' 是文件上傳字段的名稱。
  • $request->hasFile('fileInputName') : 檢查是否有文件上傳。
  1. 獲取請求的查詢參數
  • $request->query('key'): 獲取 URL 查詢參數的值。
  • $request->query()$request->all(): 獲取所有的查詢參數。
  1. 獲取請求的路由參數 (通常在路由中定義)
  • $request->route('parameterName') : 獲取路由參數的值。

9.獲取請求的會話數據

  • $request->session() : 獲取會話數據。
  1. 判斷請求中是否包含某個參數
  • $request->has('key') : 檢查是否存在指定鍵名的參數。
  • $request->filled('key') : 檢查指定鍵名的參數是否有值。

11.取得來源IP

  • $request->ip() : 取得client 端 ip


上面列出是在開發上較常用的一些方法,實際應用方法更多,大家可以點進去namespace Illuminate\Http\Request 裡檔案查看。

下一篇會針對路由參數及隱式綁定做更深一步的說明~





留言
avatar-img
留言分享你的想法!
DDDDD-avatar-img
發文者
2023/09/01
所謂的路由參數及隱試綁定概念?提及了這篇文章,趕快過去看看吧!
avatar-img
DDDDD的沙龍
15會員
37內容數
學涯無止境,透過每日or每週模仿學習筆記,不管是哪些領域也好,總有一天也可以從菜雞變小雞
DDDDD的沙龍的其他內容
2023/12/13
待業中後,發現時間變很多就開始東看看西看看,思考著要如何更深入理解Laravel框架的運用,而在Laravel框架中哪些部分是框架替我們做了哪些處理,推薦一個影片給大家一起學習理解。
Thumbnail
2023/12/13
待業中後,發現時間變很多就開始東看看西看看,思考著要如何更深入理解Laravel框架的運用,而在Laravel框架中哪些部分是框架替我們做了哪些處理,推薦一個影片給大家一起學習理解。
Thumbnail
2023/12/09
現在AI工具太多,且框架對於資安支援及處理也越來越方便,反而開始會容易忽略最底層的知識,這邊回顧MySQL的鎖,順便記錄一下找到的一些影片資源,並整理筆記
Thumbnail
2023/12/09
現在AI工具太多,且框架對於資安支援及處理也越來越方便,反而開始會容易忽略最底層的知識,這邊回顧MySQL的鎖,順便記錄一下找到的一些影片資源,並整理筆記
Thumbnail
2023/12/05
這邊主要是遇到功能需要處理時區,雖然主管給的筆記已經寫得很完美了,但覺得還是得理解吸收後並記錄自己的筆記後,好像才能有效吸收到腦袋裡
Thumbnail
2023/12/05
這邊主要是遇到功能需要處理時區,雖然主管給的筆記已經寫得很完美了,但覺得還是得理解吸收後並記錄自己的筆記後,好像才能有效吸收到腦袋裡
Thumbnail
看更多
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
在欄位輸入關鍵字,就會顯示提示列表。 架構 由HTML表單、jQuery的AJAX和PHP與MySQL組成。 先在HTML的文字輸入欄位,輸入關鍵字,接著會呼叫jQuery的AJAX去伺服器,取得建議列表;伺服器收到需求後,PHP會連接MySQL,取得建議列表,接著會建立JSON文件並回傳。
Thumbnail
在欄位輸入關鍵字,就會顯示提示列表。 架構 由HTML表單、jQuery的AJAX和PHP與MySQL組成。 先在HTML的文字輸入欄位,輸入關鍵字,接著會呼叫jQuery的AJAX去伺服器,取得建議列表;伺服器收到需求後,PHP會連接MySQL,取得建議列表,接著會建立JSON文件並回傳。
Thumbnail
Laravel是一個以MVC(參考:[設計模式]MVC)為架構的PHP Web框架。Laravel支援使用者身份驗證和授權,提供模組化套件系統。Laravel使用Blade模板系統將PHP程式碼與HTML網頁分離。 安裝環境 下載安裝composer https://getcomposer.o
Thumbnail
Laravel是一個以MVC(參考:[設計模式]MVC)為架構的PHP Web框架。Laravel支援使用者身份驗證和授權,提供模組化套件系統。Laravel使用Blade模板系統將PHP程式碼與HTML網頁分離。 安裝環境 下載安裝composer https://getcomposer.o
Thumbnail
那麼「我要什麼資料」就需要告訴伺服器特定的內容啦,舉例來說: 我要登入,就必須把「帳號」和「密碼」一起帶在請求內,發送給後端進行驗證
Thumbnail
那麼「我要什麼資料」就需要告訴伺服器特定的內容啦,舉例來說: 我要登入,就必須把「帳號」和「密碼」一起帶在請求內,發送給後端進行驗證
Thumbnail
在公司專案裡,除了使用Laravel 提供的輔助函數外,我們還可以透過建構屬於自己的Helper function 可以方便地執行諸如處理陣列、文件路徑、字符串和路由等操作,來協助我們更方便處理重複的程式碼。
Thumbnail
在公司專案裡,除了使用Laravel 提供的輔助函數外,我們還可以透過建構屬於自己的Helper function 可以方便地執行諸如處理陣列、文件路徑、字符串和路由等操作,來協助我們更方便處理重複的程式碼。
Thumbnail
今天要來分享關於 Laravel Request 概念,Request 代表了來自客戶端(瀏覽器)的HTTP請求。這個類型的物件允許您輕鬆地訪問HTTP請求中的各種數據,例如表單數據、路由參數、Cookie、HTTP標頭等。 現在我們來定義及應用吧!
Thumbnail
今天要來分享關於 Laravel Request 概念,Request 代表了來自客戶端(瀏覽器)的HTTP請求。這個類型的物件允許您輕鬆地訪問HTTP請求中的各種數據,例如表單數據、路由參數、Cookie、HTTP標頭等。 現在我們來定義及應用吧!
Thumbnail
本篇文章為Laravel初學者提供了一個指南,深入探討了Laravel的routes目錄下的功能。文章詳細描述了web.php和api.php的差異和使用情境,並簡要介紹了console.php和channels.php的功能。透過這篇文章,讀者可以更好地理解和利用Laravel的路由功能。
Thumbnail
本篇文章為Laravel初學者提供了一個指南,深入探討了Laravel的routes目錄下的功能。文章詳細描述了web.php和api.php的差異和使用情境,並簡要介紹了console.php和channels.php的功能。透過這篇文章,讀者可以更好地理解和利用Laravel的路由功能。
Thumbnail
Laravel框架中的路由系統是其核心功能之一,它允許開發者輕鬆地定義應用程式的URL結構和相應的邏輯。本篇文章將深入探討Laravel路由的基本概念、進階功能以及實際應用。
Thumbnail
Laravel框架中的路由系統是其核心功能之一,它允許開發者輕鬆地定義應用程式的URL結構和相應的邏輯。本篇文章將深入探討Laravel路由的基本概念、進階功能以及實際應用。
Thumbnail
上一篇【瀏覽器與伺服器是如何溝通的?】有說瀏覽器和伺服器的溝通橋樑是「網路請求」,這篇就來記錄一下,我目前學習到的網路請求是什麼~
Thumbnail
上一篇【瀏覽器與伺服器是如何溝通的?】有說瀏覽器和伺服器的溝通橋樑是「網路請求」,這篇就來記錄一下,我目前學習到的網路請求是什麼~
Thumbnail
在Laravel中除了用Validator來驗證資料,還可以用Form Request Validation,建立一個驗證class,在request進入controller之前,會先在這邊做驗證,若驗證失敗則不會繼續執行Controller。 建立form request: 範例程式碼:
Thumbnail
在Laravel中除了用Validator來驗證資料,還可以用Form Request Validation,建立一個驗證class,在request進入controller之前,會先在這邊做驗證,若驗證失敗則不會繼續執行Controller。 建立form request: 範例程式碼:
Thumbnail
本文模擬user註冊的情境來簡單演示,在Laravel中如何透過ajax來存取資料,以post request為例。 前端透過post把user資料送到controller中,並且透過model把資料塞進DB,最後回傳json response。 完整source cod
Thumbnail
本文模擬user註冊的情境來簡單演示,在Laravel中如何透過ajax來存取資料,以post request為例。 前端透過post把user資料送到controller中,並且透過model把資料塞進DB,最後回傳json response。 完整source cod
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News