مارک پلاس

تکنولوژی نوین اینترنتی

مدیریت درخواست‌های HTTP کنترلرها

دسته‌بندی‌ها

مدیریت درخواست‌های HTTP کنترلرها
📜 مدیریت درخواست‌های HTTP کنترلرها لاراول


در لاراول، کنترلرها به عنوان نقطه‌ ورود اصلی برای مدیریت درخواست‌ها و انجام عملیات‌های مختلف طراحی شده‌اند. مدیریت درخواست‌های HTTP در کنترلرها بخش مهمی از برنامه‌نویسی لاراول است که شامل دریافت داده‌ها، اعتبارسنجی، پردازش و ارسال پاسخ‌ها می‌شود.

در این مقاله، به نحوه مدیریت درخواست‌های HTTP در کنترلرهای لاراول، از جمله دریافت داده‌ها، اعتبارسنجی، و نحوه ارسال پاسخ‌ها می‌پردازیم.


1. 🛠 تعریف کنترلرها در لاراول

کنترلرها در لاراول برای مدیریت درخواست‌ها و انجام عملیات خاص طراحی شده‌اند. معمولاً برای هر دسته از درخواست‌ها یا عمل خاص یک کنترلر ایجاد می‌شود.

برای ایجاد یک کنترلر، از دستور Artisan استفاده می‌کنیم:

bash
php artisan make:controller MyController

این دستور یک کنترلر جدید با نام MyController ایجاد می‌کند که می‌توان آن را برای مدیریت درخواست‌ها استفاده کرد.


2. 📑 دریافت داده‌ها از درخواست‌ها

در لاراول، برای دسترسی به داده‌های ارسال شده در درخواست HTTP می‌توانید از شیء Request استفاده کنید. این داده‌ها می‌توانند از فرم‌ها، URL، هدرها، یا فایل‌های ارسال‌شده باشند.

2.1. دریافت داده‌های فرم

برای دریافت داده‌های ارسال شده از طریق فرم‌ها، از متد input() استفاده می‌کنیم:

مثال:

php
use Illuminate\Http\Request; public function store(Request $request) { $name = $request->input('name'); $email = $request->input('email'); // انجام عملیات با داده‌ها }

اگر نام فیلد ارسال‌شده در درخواست وجود نداشته باشد، می‌توانید مقدار پیش‌فرض نیز برای آن تعیین کنید:

php
$name = $request->input('name', 'مقدار پیش‌فرض');

2.2. دریافت داده‌های URL (پارامترهای GET)

برای دسترسی به داده‌هایی که از طریق URL ارسال می‌شوند (مانند پارامترهای GET)، از متد query() استفاده می‌کنیم:

php
public function show(Request $request) { $id = $request->query('id'); }

2.3. دریافت داده‌های هدر

برای دریافت داده‌های هدر درخواست، از متد header() استفاده می‌کنیم:

php
public function index(Request $request) { $userAgent = $request->header('User-Agent'); }

2.4. دریافت داده‌های فایل

برای دریافت فایل‌هایی که از طریق درخواست ارسال شده‌اند، از متد file() یا allFiles() استفاده می‌کنیم:

php
public function store(Request $request) { $file = $request->file('profile_picture'); $path = $file->store('profiles'); }

3. ✅ اعتبارسنجی داده‌ها

در لاراول، اعتبارسنجی داده‌ها یکی از مهم‌ترین مراحل در مدیریت درخواست‌هاست. لاراول ابزارهای قدرتمندی برای اعتبارسنجی داده‌های ورودی فراهم کرده است.

3.1. اعتبارسنجی ساده با استفاده از متد validate()

لاراول متدی به نام validate() دارد که به شما اجازه می‌دهد تا قوانین اعتبارسنجی را برای داده‌های ورودی تعیین کنید.

مثال:

php
public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', ]); // داده‌ها اعتبارسنجی شده‌اند و می‌توان عملیات ادامه داد }

در این مثال، اگر داده‌ها از قوانین مشخص‌شده پیروی نکنند، لاراول به‌طور خودکار خطاهایی را ایجاد می‌کند و به صفحه بازخواهد گشت.

3.2. اعتبارسنجی با پیام‌های سفارشی

شما می‌توانید پیام‌های خطای خاصی برای هر فیلد تعریف کنید:

php
public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', ], [ 'name.required' => 'لطفاً نام خود را وارد کنید.', 'email.email' => 'آدرس ایمیل وارد شده معتبر نیست.', ]); }

3.3. اعتبارسنجی اختصاصی با استفاده از فرمول‌های خود

شما همچنین می‌توانید از فرمول‌های اختصاصی خود برای اعتبارسنجی استفاده کنید. برای این‌کار از متد Validator استفاده می‌کنیم:

php
use Illuminate\Support\Facades\Validator; public function store(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', ]); if ($validator->fails()) { return redirect('form') ->withErrors($validator) ->withInput(); } // داده‌ها معتبر هستند }

4. 📤 ارسال پاسخ به درخواست‌ها

پس از پردازش داده‌های درخواست و انجام عملیات‌های مورد نیاز، شما می‌توانید پاسخ‌هایی به کاربر ارسال کنید.

4.1. ارسال پاسخ‌های ساده

برای ارسال یک پاسخ ساده، می‌توانید از متد response() استفاده کنید:

php
public function store(Request $request) { return response('Data has been saved!', 200); // پیام و کد وضعیت HTTP }

4.2. ارسال پاسخ JSON

برای ارسال پاسخ JSON، می‌توانید از متد json() استفاده کنید:

php
public function store(Request $request) { return response()->json([ 'message' => 'Data has been saved!', 'data' => $request->all(), ], 200); }

4.3. ارسال پاسخ با وضعیت‌های مختلف

برای ارسال پاسخ‌های با کد وضعیت‌های مختلف، می‌توانید از متد response() با پارامترهای مختلف استفاده کنید:

php
return response()->json([ 'message' => 'Resource not found', ], 404); // کد وضعیت 404

4.4. ارسال پاسخ Redirect

برای هدایت کاربر به صفحه‌ای دیگر (رودایرکت کردن)، می‌توانید از متد redirect() استفاده کنید:

php
public function store(Request $request) { return redirect()->route('home'); }

یا برای بازگشت به صفحه قبلی:

php
return redirect()->back();

5. 📅 کار با مراجع (Middleware) در کنترلرها

در لاراول، Middleware یک روش قدرتمند برای انجام عملیات قبل یا بعد از درخواست است. برای مثال، شما می‌توانید بررسی کنید که آیا کاربر وارد سیستم شده است یا نه، و یا دسترسی به منابع خاص را محدود کنید.

5.1. اعمال Middleware در کنترلرها

برای اعمال یک Middleware به یک متد کنترلر، از ویژگی middleware استفاده می‌کنیم:

php
public function __construct() { $this->middleware('auth'); }

این کد باعث می‌شود که متدهای این کنترلر فقط برای کاربران واردشده قابل دسترسی باشند.


6. 🔄 تنظیمات پیشرفته و پاسخ‌های سفارشی

لاراول به شما اجازه می‌دهد که به راحتی پاسخ‌های سفارشی با متدهایی مانند abort() برای ارسال ارور و یا response()->view() برای ارسال پاسخ با ویوهای سفارشی ارسال کنید.

ارسال ارور 404:

php
abort(404, 'Page not found');

ارسال پاسخ با ویو:

php
return response()->view('errors.custom', ['error' => 'Something went wrong']);

نتیجه‌گیری

مدیریت درخواست‌های HTTP در لاراول یک فرآیند بسیار انعطاف‌پذیر است که به شما امکان می‌دهد تا داده‌ها را از درخواست‌ها استخراج کرده، اعتبارسنجی کنید و سپس پاسخ‌های متناسب را ارسال کنید. با استفاده از ابزارهایی مانند Request, Validator, و متدهای مختلف پاسخ‌دهی، شما می‌توانید درخواست‌های HTTP را به بهترین شکل مدیریت کرده و تجربه کاربری بهتری ارائه دهید.

محتوای مرتبط

پست‌های مرتبط