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
15會員
37內容數
學涯無止境,透過每日or每週模仿學習筆記,不管是哪些領域也好,總有一天也可以從菜雞變小雞
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
DDDDD的沙龍 的其他內容
第一次學習框架,總是透過本地使用XAMPP or MAMP工具進行開發練習,但為了將自己練習的小專案部署到線上主機DEMO給身邊朋油看,就得需要額外先了解學習GCP or AWS,但一不小心亂搞就會產生額外費用(亂搞結果收費爆掉的過來人...),後來發現好物,那就是fly.io 啦
通常練習開發時,總不知道選擇哪些方便的GUI工具協助簡化工作,新手時期通常都會搭配MAMP or XAMPP本身的 phpmyadmin 使用,雖然沒有不可以,但在職場上通常都是跟著同事們用一樣的版本工具,這邊介紹市面上常見且好用的 MySQL GUI 工具,幫助開發人員減少工作量
學習框架前第一步,先理解框架的生命週期 學習完PHP程式基礎後,就會開始進入框架的學習,為了能理解Laravel框架是如何運作的,就必須清楚框架的生命週期,這也是面試時的必考題哦。
常說,科技始終來自於人性,而懶惰就是人創造東西的動力 為了解放雙手,創造更多時間價值,這邊我們要先理解什麼是crontab,並利用crontab的設定來幫我們處理例行性任務,並延伸到 aws EventBridge 去設定定時排程,去定時執行我們的爬蟲~
根據PHP官方說明,浮點數的精度有限。儘管取決於系統,PHP 通常使用 IEEE 754 雙精度格式,則由於取整而導致的最大相對誤差為 1.11e-16。非基本數學運算可能會給出更大誤差,並且要考慮到進行複合運算時的誤差傳遞。
最近開了複委託打算定期定額買美股,主要因為交割戶是設定外幣帳戶交割,先前設置了常用銀行的外幣到價通知,但是美金最近一直逆空高灰,幾乎不會啟動到價通知🥲,只好一直關注銀行即期價格,但因為上班常常會忘記要看一下外幣網銀換匯優惠,故想說練習python之餘,並順便做個爬蟲將資料發送到line群組
第一次學習框架,總是透過本地使用XAMPP or MAMP工具進行開發練習,但為了將自己練習的小專案部署到線上主機DEMO給身邊朋油看,就得需要額外先了解學習GCP or AWS,但一不小心亂搞就會產生額外費用(亂搞結果收費爆掉的過來人...),後來發現好物,那就是fly.io 啦
通常練習開發時,總不知道選擇哪些方便的GUI工具協助簡化工作,新手時期通常都會搭配MAMP or XAMPP本身的 phpmyadmin 使用,雖然沒有不可以,但在職場上通常都是跟著同事們用一樣的版本工具,這邊介紹市面上常見且好用的 MySQL GUI 工具,幫助開發人員減少工作量
學習框架前第一步,先理解框架的生命週期 學習完PHP程式基礎後,就會開始進入框架的學習,為了能理解Laravel框架是如何運作的,就必須清楚框架的生命週期,這也是面試時的必考題哦。
常說,科技始終來自於人性,而懶惰就是人創造東西的動力 為了解放雙手,創造更多時間價值,這邊我們要先理解什麼是crontab,並利用crontab的設定來幫我們處理例行性任務,並延伸到 aws EventBridge 去設定定時排程,去定時執行我們的爬蟲~
根據PHP官方說明,浮點數的精度有限。儘管取決於系統,PHP 通常使用 IEEE 754 雙精度格式,則由於取整而導致的最大相對誤差為 1.11e-16。非基本數學運算可能會給出更大誤差,並且要考慮到進行複合運算時的誤差傳遞。
最近開了複委託打算定期定額買美股,主要因為交割戶是設定外幣帳戶交割,先前設置了常用銀行的外幣到價通知,但是美金最近一直逆空高灰,幾乎不會啟動到價通知🥲,只好一直關注銀行即期價格,但因為上班常常會忘記要看一下外幣網銀換匯優惠,故想說練習python之餘,並順便做個爬蟲將資料發送到line群組
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
在這篇文章中,我們將介紹如何使用 Laravel 的 MVC(模型-視圖-控制器)架構來處理資料的創建、更新、刪除操作,並展示如何使用外鍵連接其他資料表。我們將從前端發送請求到後端,並演示如何在 Controller 中處理這些請求來操作資料。
Thumbnail
API(Application Programming Interface,應用程式介面)可以視為不同軟體系統之間的溝通橋梁,讓雙邊可以交換數據並執行各種功能。這篇會記錄產品經理一定要知道的幾個 API 概念,像是常見的錯誤代碼以及不同的 HTTP 方法(如 PUT、GET、POST)和實際案例說明
Thumbnail
在這一章中,我們探討了 PHP 中的函數,包括函數的基本結構、不同的函數定義方式(如函數聲明、函數表達式、箭頭函數和匿名函數)以及如何呼叫函數。我們還討論了函數的參數處理方式,包括單個參數、多個參數、預設參數值和剩餘參數。此外,我們還介紹了函數的返回值,包括返回單個值、返回物件和返回函數的情況。
Thumbnail
※ 原本狀態:伺服器渲染 這是 MVC 架構下的 request / response 示意圖,在這張圖呈現的架構裡,畫面和資料都由同一個架構處理。 伺服器渲染流程: 瀏覽器針對特定網址送出請求。 路由器解析請求後,轉接給對應的 controller。 controller 按照要求,透過
Thumbnail
※ Params是什麼? 在網頁開發中,params代表的是參數(Parameters)。當你在路由(Route)中定義了一個或多個變數時,這些變數的值就會被存儲在 params 對象中。所以,params 就是用來存儲路由參數的地方,這些參數可以在處理請求時使用。 ※ Params的兩個功能:
xhr 在下面的例子裡,我們首先建立了一個 XMLHttpRequest 物件,並使用 .open() 開啟一個 URL,最後使用 .send() 發出 request。 具體來說步驟有四個: 建立XMLHttpReque 開啟一個請求。 送出請求。 拿到回應後去處理畫面要如何呈現。
※ 什麼是 RESTful API? 這種運用 HTTP 來表達語義的路由設計風格稱為 RESTful API,它描述了如何實現 Web API 的架構。所謂的 API 是應用程式介面 (application programming interface),網址也是一種應用程式的「介面」,故稱為
Thumbnail
在開發前後端分離架構時,使用兩個不同網域所遇到跨域請求問題。特別是在POST請求時行為差異大,揭示了「簡單請求」與「預檢請求」的關鍵差異。簡單請求不需預檢,但application/json會觸發預檢請求,需透過特定設定解決。分享這篇文章希望幫助開發者有效處理跨域問題。
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
發送表單用get跟post看起來好像都無所謂,然而事實並非如此,使用GET的風險如下: 安全性問題 機密資訊為何不宜用GET,是因為由GET方法提交的表單會將欄位的key,value顯示於URL上,想像一下如果小明借用你的電腦,查看你的網頁歷史紀錄時就可以看到你的帳密了,多可怕! 再來就是如果
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
在這篇文章中,我們將介紹如何使用 Laravel 的 MVC(模型-視圖-控制器)架構來處理資料的創建、更新、刪除操作,並展示如何使用外鍵連接其他資料表。我們將從前端發送請求到後端,並演示如何在 Controller 中處理這些請求來操作資料。
Thumbnail
API(Application Programming Interface,應用程式介面)可以視為不同軟體系統之間的溝通橋梁,讓雙邊可以交換數據並執行各種功能。這篇會記錄產品經理一定要知道的幾個 API 概念,像是常見的錯誤代碼以及不同的 HTTP 方法(如 PUT、GET、POST)和實際案例說明
Thumbnail
在這一章中,我們探討了 PHP 中的函數,包括函數的基本結構、不同的函數定義方式(如函數聲明、函數表達式、箭頭函數和匿名函數)以及如何呼叫函數。我們還討論了函數的參數處理方式,包括單個參數、多個參數、預設參數值和剩餘參數。此外,我們還介紹了函數的返回值,包括返回單個值、返回物件和返回函數的情況。
Thumbnail
※ 原本狀態:伺服器渲染 這是 MVC 架構下的 request / response 示意圖,在這張圖呈現的架構裡,畫面和資料都由同一個架構處理。 伺服器渲染流程: 瀏覽器針對特定網址送出請求。 路由器解析請求後,轉接給對應的 controller。 controller 按照要求,透過
Thumbnail
※ Params是什麼? 在網頁開發中,params代表的是參數(Parameters)。當你在路由(Route)中定義了一個或多個變數時,這些變數的值就會被存儲在 params 對象中。所以,params 就是用來存儲路由參數的地方,這些參數可以在處理請求時使用。 ※ Params的兩個功能:
xhr 在下面的例子裡,我們首先建立了一個 XMLHttpRequest 物件,並使用 .open() 開啟一個 URL,最後使用 .send() 發出 request。 具體來說步驟有四個: 建立XMLHttpReque 開啟一個請求。 送出請求。 拿到回應後去處理畫面要如何呈現。
※ 什麼是 RESTful API? 這種運用 HTTP 來表達語義的路由設計風格稱為 RESTful API,它描述了如何實現 Web API 的架構。所謂的 API 是應用程式介面 (application programming interface),網址也是一種應用程式的「介面」,故稱為
Thumbnail
在開發前後端分離架構時,使用兩個不同網域所遇到跨域請求問題。特別是在POST請求時行為差異大,揭示了「簡單請求」與「預檢請求」的關鍵差異。簡單請求不需預檢,但application/json會觸發預檢請求,需透過特定設定解決。分享這篇文章希望幫助開發者有效處理跨域問題。
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
發送表單用get跟post看起來好像都無所謂,然而事實並非如此,使用GET的風險如下: 安全性問題 機密資訊為何不宜用GET,是因為由GET方法提交的表單會將欄位的key,value顯示於URL上,想像一下如果小明借用你的電腦,查看你的網頁歷史紀錄時就可以看到你的帳密了,多可怕! 再來就是如果