وقتی کاربر وارد یک صفحه از یک وبسایت میشود، فرمی را ارسال میکند یا یک درخواست API به سرور میفرستد، در واقع یک HTTP Request ایجاد شده است. برنامه Laravel این درخواست را دریافت میکند، آن را از بخشهای مختلف مانند Middleware و Route عبور میدهد، منطق موردنظر را اجرا میکند و در نهایت یک HTTP Response به کاربر یا کلاینت برمیگرداند.
در Laravel تقریباً هر برنامهای با همین چرخه سروکار دارد.
برای مثال، وقتی کاربر یک فرم ثبتنام را ارسال میکند:
Browser
↓
HTTP Request
↓
Middleware
↓
Route
↓
Controller
↓
Application Logic
↓
HTTP Response
↓
Browser
بنابراین درک Request و Response یکی از مفاهیم پایهای و مهم Laravel است؛ مخصوصاً اگر قصد ساخت فرم، پنل مدیریت، فروشگاه اینترنتی، REST API یا نرمافزارهای تحت وب را داشته باشید.
در این مقاله از مجموعه آموزش Laravel، با Request و Response در Laravel بهصورت عملی آشنا میشویم.
Request و Response در Laravel چه هستند؟
قبل از اینکه وارد Laravel شویم، بهتر است مفهوم این دو اصطلاح را در سطح HTTP بشناسیم.
Request چیست؟
Request یا درخواست پیامی است که Client برای Server ارسال میکند.
Client میتواند موارد مختلفی باشد:
- مرورگر
- اپلیکیشن موبایل
- JavaScript
- Postman
- یک سرویس دیگر
- یک API Client
یک Request میتواند شامل اطلاعات مختلفی باشد، مانند:
- آدرس درخواست
- HTTP Method
- پارامترهای URL
- اطلاعات فرم
- JSON
- Headerها
- Cookieها
- فایلهای آپلودشده
- اطلاعات احراز هویت
برای مثال:
POST /users HTTP/1.1
Content-Type: application/json
{
"name": "Ali",
"email": "ali@example.com"
}
در اینجا Client یک Request به سرور ارسال کرده است.
Response چیست؟
Response یا پاسخ چیزی است که Server در جواب Request به Client برمیگرداند.
Response میتواند شامل مواردی مانند موارد زیر باشد:
- HTML
- JSON
- فایل
- Redirect
- Status Code
- Header
- Cookie
برای مثال یک API ممکن است چنین پاسخی برگرداند:
{
"message": "User created successfully"
}
بنابراین بهصورت ساده:
> Request اطلاعاتی است که به سرور میفرستیم و Response پاسخی است که از سرور دریافت میکنیم.
# Request و Response در Laravel چگونه کار میکنند؟
در Laravel معمولاً Request ابتدا وارد برنامه میشود و از Middlewareها عبور میکند.
سپس Laravel با توجه به Route، درخواست را به Controller یا Closure مربوطه میرساند.
در نهایت Controller یا بخش دیگری از برنامه یک Response ایجاد میکند.
چرخه کلی به شکل زیر است:
Client
↓
Request
↓
Laravel
↓
Middleware
↓
Route
↓
Controller
↓
Business Logic
↓
Response
↓
Client
برای مثال:
Route::get('/products', [ProductController::class, 'index']);
اگر کاربر به آدرس زیر مراجعه کند:
/products
Laravel درخواست را دریافت میکند، Route مناسب را پیدا میکند و متد index کنترلر را اجرا میکند.
# Request در Laravel چیست؟
Laravel برای کار با HTTP Request یک کلاس اختصاصی در اختیار توسعهدهنده قرار میدهد:
Illuminate\Http\Request
معمولاً این کلاس را در Controller بهصورت Type Hint دریافت میکنیم:
use Illuminate\Http\Request;
public function store(Request $request)
{
//
}
حالا متغیر $request اطلاعات Request فعلی را در اختیار ما قرار میدهد.
برای مثال:
public function store(Request $request)
{
$name = $request->input('name');
return $name;
}
اگر کاربر در فرم مقدار زیر را ارسال کرده باشد:
name=Ali
مقدار $name برابر خواهد بود با:
Ali
# دریافت اطلاعات ورودی با input()
یکی از پرکاربردترین متدهای Request، متد input() است.
مثلاً:
$name = $request->input('name');
یا:
$email = $request->input('email');
میتوان مقدار پیشفرض نیز تعیین کرد:
$name = $request->input('name', 'Guest');
اگر name ارسال نشده باشد، مقدار Guest برگردانده میشود.
مثال:
public function store(Request $request)
{
$name = $request->input('name', 'Guest');
return $name;
}
# دریافت تمام دادههای Request
اگر بخواهیم تمام Inputهای ارسالشده را دریافت کنیم، میتوانیم از all() استفاده کنیم:
$data = $request->all();
مثلاً اگر فرم این اطلاعات را ارسال کند:
name=Ali
email=ali@example.com
age=25
نتیجه چیزی مشابه این خواهد بود:
[
'name' => 'Ali',
'email' => 'ali@example.com',
'age' => 25,
]
البته در پروژههای واقعی نباید صرفاً به دریافت تمام دادهها اکتفا کنیم؛ مخصوصاً زمانی که قرار است این دادهها مستقیماً وارد مدل یا Database شوند.
بهتر است فقط فیلدهای موردنیاز را دریافت کنیم.
# دریافت فقط فیلدهای مشخص با only()
فرض کنید فرم ما شامل این فیلدها است:
name
email
phone
address
is_admin
اما Controller فقط به name و email نیاز دارد.
میتوانیم بنویسیم:
$data = $request->only([
'name',
'email',
]);
نتیجه فقط شامل همین دو مقدار خواهد بود.
این روش برای کنترل دقیق دادههای ورودی بسیار مناسبتر است.
# حذف فیلدهای خاص با except()
گاهی میخواهیم تقریباً تمام دادهها را دریافت کنیم، اما چند فیلد مشخص را کنار بگذاریم.
برای این کار:
$data = $request->except([
'is_admin',
]);
مثلاً اگر کاربر فیلدی با نام is_admin ارسال کند، این فیلد از نتیجه حذف خواهد شد.
البته این موضوع جایگزین Authorization و Validation نیست.
# دریافت Query String در Laravel
گاهی اطلاعات بهصورت Query String در URL ارسال میشوند.
مثلاً:
/products?search=laptop&page=2
برای دریافت search میتوانیم بنویسیم:
$search = $request->query('search');
و برای page:
$page = $request->query('page');
همچنین میتوان مقدار پیشفرض تعیین کرد:
$page = $request->query('page', 1);
در این حالت اگر page وجود نداشته باشد، مقدار 1 استفاده میشود.
# تفاوت input() و query()
این دو متد ممکن است در ابتدا کمی گیجکننده باشند.
query() مشخصاً برای Query String استفاده میشود.
مثلاً:
/products?search=laptop
در حالی که input() برای دریافت Input درخواست استفاده میشود و میتواند دادههای ورودی مختلفی را پوشش دهد.
برای مثال:
$request->input('name');
یا:
$request->query('search');
در پروژههای واقعی بهتر است متدی را انتخاب کنید که دقیقاً هدف داده را مشخص میکند.
# دریافت Route Parameter با Request
فرض کنید Route زیر را داریم:
Route::get('/products/{id}', [ProductController::class, 'show']);
و کاربر وارد این URL شود:
/products/25
میتوانیم مقدار پارامتر Route را از Request دریافت کنیم:
$id = $request->route('id');
سپس:
public function show(Request $request)
{
$id = $request->route('id');
return $id;
}
در این مثال مقدار 25 دریافت میشود.
البته در بسیاری از موارد میتوان Route Parameter را مستقیماً به متد Controller نیز تزریق کرد که روش خواناتری است:
public function show($id)
{
return $id;
}
# دریافت HTTP Method
میتوانیم HTTP Method درخواست را با method() دریافت کنیم:
$method = $request->method();
مثلاً ممکن است مقدار آن یکی از موارد زیر باشد:
GET
POST
PUT
PATCH
DELETE
برای بررسی Method نیز میتوان از isMethod() استفاده کرد:
if ($request->isMethod('post')) {
//
}
این روش زمانی مفید است که رفتار برنامه بر اساس نوع درخواست تغییر کند.
# دریافت URL درخواست
Laravel امکانات مختلفی برای بررسی URL در اختیار ما قرار میدهد.
دریافت URL بدون Query String
$url = $request->url();
دریافت URL کامل
$url = $request->fullUrl();
برای مثال اگر URL این باشد:
/products?search=laptop
fullUrl() اطلاعات Query String را نیز در URL نگه میدارد.
# دریافت Header در Laravel
HTTP Request میتواند Headerهای مختلفی داشته باشد.
برای مثال:
Accept
Content-Type
Authorization
User-Agent
برای دریافت یک Header میتوانیم بنویسیم:
$token = $request->header('Authorization');
یا:
$contentType = $request->header('Content-Type');
میتوانیم بررسی کنیم که یک Header وجود دارد یا خیر:
if ($request->hasHeader('Authorization')) {
//
}
در APIها استفاده از Header بسیار رایج است.
# دریافت Cookie از Request
Cookie نیز میتواند همراه Request ارسال شود.
برای دریافت Cookie:
$value = $request->cookie('theme');
مثلاً:
$theme = $request->cookie('theme', 'light');
اگر Cookie موردنظر وجود نداشته باشد، مقدار light استفاده خواهد شد.
# بررسی وجود یک Input
میتوانیم بررسی کنیم که یک فیلد در Request وجود دارد یا خیر.
مثلاً:
if ($request->has('email')) {
//
}
برای چند فیلد نیز میتوانیم از آرایه استفاده کنیم:
if ($request->has(['name', 'email'])) {
//
}
# تفاوت has() و filled()
این دو متد کاربرد مشابهی دارند اما یکسان نیستند.
برای مثال:
$request->has('name');
وجود فیلد را بررسی میکند.
اما:
$request->filled('name');
بررسی میکند که فیلد دارای مقدار پرشده باشد.
برای فرمها و فیلترهای جستجو، filled() در بسیاری از سناریوها کاربردی است.
مثلاً:
if ($request->filled('search')) {
$search = $request->input('search');
}
# دریافت User فعلی
اگر کاربر احراز هویت شده باشد، Laravel میتواند User فعلی را در اختیار Request قرار دهد.
مثلاً:
$user = $request->user();
یا:
$userId = $request->user()?->id;
البته اینکه User در دسترس باشد به سیستم Authentication و Middlewareهای پروژه بستگی دارد.
بنابراین نباید فرض کنیم هر Request الزاماً یک User احراز هویتشده دارد.
# دریافت فایل از Request
وقتی یک فرم فایل ارسال میکند، میتوان فایل را از Request دریافت کرد.
مثلاً:
$file = $request->file('image');
میتوان وجود فایل را نیز بررسی کرد:
if ($request->hasFile('image')) {
//
}
برای آپلود فایل، علاوه بر Request، مباحثی مانند Validation و Storage نیز اهمیت دارند که در مقالات مربوط به Validation، File Upload و Storage بهصورت تخصصی بررسی میشوند.
# تغییر یا اضافه کردن Input در Request
گاهی لازم است قبل از ادامه پردازش Request، مقداری به آن اضافه کنیم.
برای مثال:
$request->merge([
'source' => 'website',
]);
حالا:
$request->input('source');
مقدار زیر را برمیگرداند:
website
این قابلیت در بعضی سناریوهای پردازش داده مفید است.
با این حال، نباید بدون دلیل Request اصلی را تغییر دهیم؛ مخصوصاً در پروژههای بزرگ که خوانایی جریان داده اهمیت زیادی دارد.
# Response در Laravel چیست؟
بعد از اینکه Laravel درخواست را پردازش کرد، باید پاسخی به Client برگرداند.
این پاسخ همان Response است.
سادهترین حالت:
return 'Hello World';
Laravel این مقدار را به یک HTTP Response تبدیل میکند.
اما در پروژههای حرفهای معمولاً Responseها ساختار مشخصتری دارند.
# ساخت Response با response()
Laravel یک Helper به نام response() دارد.
مثلاً:
return response('Hello World');
میتوان Status Code نیز تعیین کرد:
return response('Created', 201);
در اینجا Response با Status Code برابر 201 ارسال میشود.
# JSON Response در Laravel
یکی از مهمترین کاربردهای Response در Laravel، ساخت پاسخ JSON است.
برای این کار:
return response()->json([
'message' => 'Success',
]);
Laravel خروجی JSON مناسب را برای Client ایجاد میکند.
مثلاً:
{
"message": "Success"
}
این نوع Response در REST APIها بسیار پرکاربرد است.
# ارسال Status Code همراه JSON
میتوانیم Status Code را نیز مشخص کنیم:
return response()->json([
'message' => 'User created successfully',
], 201);
در این مثال:
HTTP Status: 201 Created
برگردانده میشود.
# ارسال دادههای بیشتر در JSON Response
مثلاً:
return response()->json([
'success' => true,
'message' => 'Product created successfully',
'data' => [
'id' => 25,
'name' => 'Laptop',
],
], 201);
نتیجه:
{
"success": true,
"message": "Product created successfully",
"data": {
"id": 25,
"name": "Laptop"
}
}
این ساختار برای APIها بسیار رایج است.
# HTTP Status Code چیست؟
Status Code مشخص میکند نتیجه پردازش Request چه بوده است.
برخی Status Codeهای مهم عبارتاند از:
| Status Code | مفهوم |
|---|---|
| 200 | درخواست با موفقیت پردازش شد |
| 201 | منبع جدید ایجاد شد |
| 204 | درخواست موفق بود اما محتوایی برای Response وجود ندارد |
| 301 | Redirect دائمی |
| 302 | Redirect موقت |
| 400 | درخواست نامعتبر |
| 401 | احراز هویت موردنیاز است |
| 403 | دسترسی مجاز نیست |
| 404 | منبع پیدا نشد |
| 422 | دادههای ارسالشده قابل پردازش نیستند؛ معمولاً برای Validation |
| 429 | تعداد درخواستها بیش از حد مجاز است |
| 500 | خطای داخلی سرور |
انتخاب Status Code مناسب باعث میشود Frontend، اپلیکیشن موبایل و سایر Clientها بهتر بتوانند نتیجه درخواست را تشخیص دهند.
# Redirect در Laravel
در برنامههای معمولی وب، همیشه لازم نیست JSON برگردانیم.
گاهی میخواهیم کاربر را به صفحه دیگری منتقل کنیم.
مثلاً:
return redirect('/dashboard');
یا:
return redirect()->route('dashboard');
اگر Route نام داشته باشد، روش دوم معمولاً خواناتر و قابلنگهداریتر است.
# Redirect به صفحه قبلی
یکی از کاربردهای رایج:
return redirect()->back();
این روش معمولاً بعد از پردازش فرمها کاربرد دارد.
مثلاً:
public function store(Request $request)
{
// ذخیره اطلاعات
return redirect()->back();
}
# ارسال پیام همراه Redirect
میتوانیم یک پیام نیز همراه Redirect ارسال کنیم:
return redirect()
->route('products.index')
->with('success', 'محصول با موفقیت ایجاد شد.');
سپس در View میتوان این پیام را نمایش داد.
مثلاً:
@if (session('success'))
<div>
{{ session('success') }}
</div>
@endif
این الگو در پنلهای مدیریت بسیار کاربردی است.
# Response همراه Header سفارشی
میتوان Header سفارشی نیز به Response اضافه کرد.
مثلاً:
return response('Hello')
->header('X-App-Version', '1.0');
یا برای چند Header:
return response('Hello')
->withHeaders([
'X-App-Version' => '1.0',
'X-App-Type' => 'Laravel',
]);
این قابلیت در APIها و ارتباط بین سرویسها کاربرد دارد.
# ارسال Cookie در Response
Laravel امکان اضافه کردن Cookie به Response را نیز فراهم میکند.
مثلاً:
return response('Saved')
->cookie('theme', 'dark');
در این حالت Cookie همراه Response برای Client ارسال میشود.
در پروژههای واقعی باید هنگام استفاده از Cookie به موارد امنیتی مانند Secure، HttpOnly و SameSite نیز توجه شود.
# Response برای View
Response فقط برای JSON نیست.
میتوانیم یک View را نیز بهعنوان Response برگردانیم:
return response()->view('products.index', [
'products' => $products,
]);
البته در Laravel معمولاً میتوان سادهتر نوشت:
return view('products.index', [
'products' => $products,
]);
Laravel خودش View را به Response مناسب تبدیل میکند.
# Response برای دانلود فایل
Laravel میتواند Response مربوط به دانلود فایل ایجاد کند.
مثلاً:
return response()->download(
storage_path('app/report.pdf')
);
در این حالت مرورگر فایل را بهعنوان فایل قابل دانلود دریافت میکند.
برای فایلهای حساس باید قبل از ارسال فایل، دسترسی کاربر را بررسی کنیم.
# نمایش فایل به جای دانلود
گاهی میخواهیم فایل در مرورگر نمایش داده شود.
برای مثال:
return response()->file(
storage_path('app/document.pdf')
);
تفاوت آن با download() در نحوه ارائه فایل به Client است.
# تفاوت Request و Response در Laravel
تفاوت این دو مفهوم را میتوان خیلی ساده در جدول زیر مشاهده کرد:
| ویژگی | Request | Response |
|---|---|---|
| جهت حرکت | Client → Server | Server → Client |
| کاربرد | دریافت اطلاعات | ارسال نتیجه |
| نمونه | فرم، Query، Header | HTML، JSON، Redirect |
| کلاس اصلی | Request | Response |
| مثال | $request->input() | response()->json() |
| زمان استفاده | هنگام پردازش ورودی | هنگام برگرداندن نتیجه |
به بیان ساده:
Request = چه چیزی از کاربر/Client دریافت کردهایم؟
Response = در جواب آن چه چیزی برگردانیم؟
# یک مثال واقعی: دریافت اطلاعات فرم
فرض کنید فرم زیر را داریم:
<form method="POST" action="/products">
@csrf
<input type="text" name="name">
<input type="number" name="price">
<button type="submit">
ذخیره محصول
</button>
</form>
Route:
Route::post('/products', [ProductController::class, 'store']);
Controller:
use Illuminate\Http\Request;
public function store(Request $request)
{
$name = $request->input('name');
$price = $request->input('price');
// ذخیره محصول
return redirect()
->route('products.index')
->with('success', 'محصول با موفقیت ذخیره شد.');
}
در این مثال چند مفهوم را همزمان داریم:
- Browser یک Request ارسال میکند.
- Laravel Request را دریافت میکند.
- Middleware مربوطه اجرا میشود.
- Route به Controller متصل میشود.
- Controller اطلاعات را از
$requestدریافت میکند. - اطلاعات پردازش میشوند.
- Laravel یک Redirect Response برمیگرداند.
- کاربر به صفحه محصولات منتقل میشود.
# مثال واقعی: ساخت API با Request و Response
فرض کنید API زیر را داریم:
Route::post('/api/products', [ProductController::class, 'store']);
Controller:
use Illuminate\Http\Request;
public function store(Request $request)
{
$name = $request->input('name');
$price = $request->input('price');
// ذخیره محصول
return response()->json([
'success' => true,
'message' => 'Product created successfully',
'data' => [
'name' => $name,
'price' => $price,
],
], 201);
}
اگر Client این JSON را ارسال کند:
{
"name": "Laptop",
"price": 50000000
}
Laravel میتواند آن را با Request دریافت کند:
$request->input('name');
و در نهایت JSON Response مشابه زیر برگرداند:
{
"success": true,
"message": "Product created successfully",
"data": {
"name": "Laptop",
"price": 50000000
}
}
این الگوی ساده، پایه بسیاری از APIهای Laravel است.
# Request و Validation چه ارتباطی با هم دارند؟
یکی از نکات مهم این است که Request بهتنهایی به معنی معتبر بودن دادهها نیست.
مثلاً:
$name = $request->input('name');
صرفاً به این معنی است که مقدار name را دریافت کردهایم.
این کد نمیگوید:
- آیا
nameارسال شده؟ - آیا رشته است؟
- آیا بیش از حد طولانی است؟
- آیا مقدار مناسبی دارد؟
- آیا کاربر اجازه ارسال این مقدار را دارد؟
به همین دلیل مرحله بعدی در پردازش فرمها معمولاً Validation است.
برای مثال:
$request->validate([
'name' => ['required', 'string', 'max:255'],
]);
Validation یکی از مهمترین مباحث Laravel است و در مقاله بعدی این مجموعه بهصورت کامل بررسی خواهد شد.
# اشتباهات رایج هنگام کار با Request
۱. اعتماد کردن مستقیم به دادههای کاربر
نباید فرض کنیم هر چیزی که از Request دریافت میکنیم معتبر است.
مثلاً:
$email = $request->input('email');
این فقط داده را دریافت میکند.
برای استفاده جدی از آن باید Validation و کنترلهای امنیتی مناسب داشته باشیم.
۲. استفاده بیدلیل از all()
گاهی توسعهدهنده تمام Request را دریافت میکند:
$data = $request->all();
و سپس آن را مستقیماً برای عملیات حساس استفاده میکند.
این کار میتواند باعث ورود دادههایی شود که برنامه انتظارشان را نداشته است.
در موارد لازم بهتر است دادههای موردنیاز را مشخص کنیم:
$data = $request->only([
'name',
'email',
]);
۳. اشتباه گرفتن Query String و Body
مثلاً این URL:
/products?search=laptop
دارای Query String است.
در حالی که یک Request POST میتواند دادهها را در Body ارسال کند.
شناخت تفاوت این بخشها در طراحی API و فرمها بسیار مهم است.
۴. استفاده از Status Code نامناسب
مثلاً اگر یک API با موفقیت یک Resource جدید ایجاد کرده است، Response آن نباید صرفاً یک متن نامشخص باشد.
بهتر است Response ساختار مشخص و Status Code مناسب داشته باشد:
return response()->json([
'message' => 'Created',
], 201);
۵. قرار دادن اطلاعات حساس در Response
نباید اطلاعاتی مانند:
- Password
- Secret Key
- Tokenهای حساس
- اطلاعات خصوصی کاربران
را بدون دلیل در JSON Response قرار دهیم.
Response API باید فقط اطلاعات موردنیاز Client را برگرداند.
# بهترین روشها برای کار با Request و Response در Laravel
برای پروژههای واقعی بهتر است چند اصل را رعایت کنید.
۱. ورودی کاربر را معتبر فرض نکنید
هر دادهای که از Client میآید باید متناسب با کاربردش بررسی شود.
۲. فقط داده موردنیاز را دریافت کنید
بهجای:
$request->all();
در صورت نیاز از:
$request->only([
'name',
'email',
]);
استفاده کنید.
۳. Responseهای API را ساختاریافته نگه دارید
مثلاً:
return response()->json([
'success' => true,
'message' => 'Operation completed.',
'data' => $data,
]);
۴. Status Code مناسب استفاده کنید
Status Code بخشی از قرارداد API است و Client میتواند از آن برای تشخیص نتیجه استفاده کند.
۵. منطق سنگین را داخل Controller قرار ندهید
Controller بهتر است مسئول دریافت Request، هماهنگ کردن عملیات و برگرداندن Response باشد.
منطق پیچیده کسبوکار را میتوان در Serviceها یا ساختارهای مناسبتر پروژه قرار داد.
۶. اطلاعات حساس را به Client برنگردانید
هر چیزی که در Response قرار میدهید بالقوه در اختیار Client قرار میگیرد.
# Request و Response در معماری Laravel چه جایگاهی دارند؟
در یک پروژه واقعی ممکن است جریان به شکل زیر باشد:
HTTP Request
↓
Middleware
↓
Route
↓
Controller
↓
Form Request / Validation
↓
Service
↓
Model / Database
↓
Resource / Response
↓
HTTP Response
این معماری باعث میشود هر بخش مسئولیت مشخصی داشته باشد.
مثلاً:
Request
دادههای Client را وارد برنامه میکند.
Middleware
مواردی مانند Authentication، Authorization یا محدودیتهای دیگر را کنترل میکند.
Controller
جریان درخواست را مدیریت میکند.
Validation / Form Request
صحت دادههای ورودی را بررسی میکند.
Service
منطق کسبوکار را اجرا میکند.
Model
با داده و Database کار میکند.
Response
نتیجه را به Client برمیگرداند.
این تفکیک مسئولیتها در پروژههای بزرگ Laravel اهمیت بسیار زیادی پیدا میکند.
# جمعبندی
Request و Response از اساسیترین مفاهیم توسعه وب با Laravel هستند.
هر بار که کاربر صفحهای را باز میکند، فرمی ارسال میکند یا یک API را فراخوانی میکند، یک Request وارد برنامه میشود. Laravel این Request را پردازش کرده و در نهایت Response مناسب را به Client برمیگرداند.
در Laravel با استفاده از کلاس Request میتوان به اطلاعات مختلفی مانند موارد زیر دسترسی پیدا کرد:
- Inputهای فرم
- Query String
- Route Parameter
- Header
- Cookie
- فایل
- HTTP Method
- User احراز هویتشده
از طرف دیگر، با ابزارهایی مانند:
response()
و:
response()->json()
میتوان Responseهای مختلفی ایجاد کرد؛ از HTML و JSON گرفته تا Redirect، فایل و Responseهای دارای Header یا Cookie.
درک صحیح Request و Response پایه مهمی برای مباحث پیشرفتهتر Laravel مانند Validation، Form Request، Authentication، REST API و ساخت نرمافزارهای حرفهای است.
# سوالات متداول
Request در Laravel چیست؟
Request شیئی است که اطلاعات درخواست HTTP فعلی را در اختیار برنامه Laravel قرار میدهد. از طریق آن میتوان اطلاعاتی مانند Input، Query String، Header، Cookie و فایلهای ارسالشده را دریافت کرد.
چگونه اطلاعات فرم را در Laravel دریافت کنیم؟
با استفاده از شیء Request:
$name = $request->input('name');
چگونه JSON Response در Laravel ایجاد کنیم؟
میتوان از response()->json() استفاده کرد:
return response()->json([
'message' => 'Success',
]);
چگونه Status Code را در Laravel تغییر دهیم؟
میتوان Status Code را بهعنوان آرگومان دوم JSON Response مشخص کرد:
return response()->json([
'message' => 'Created',
], 201);
تفاوت Request و Response چیست؟
Request از Client به Server ارسال میشود و Response نتیجه پردازش Server است که به Client برگردانده میشود.
آیا Request دادههای معتبر را تضمین میکند؟
خیر. Request فقط دادههای ارسالشده را در اختیار برنامه قرار میدهد. برای بررسی صحت دادهها باید از Validation استفاده شود.
آیا میتوان در Laravel Header سفارشی به Response اضافه کرد؟
بله:
return response('Hello')
->header('X-App-Version', '1.0');
آیا Laravel برای API مناسب است؟
بله. Laravel امکانات متعددی برای ساخت API دارد و Request و Response یکی از پایههای اصلی این معماری هستند.





