در نوشته های پیشین توضیح دادیم که کاربران از دو طریق آدرس ها و فرم های اچ تی ام ال می توانند درخواست ها را به دو روش GET و POST به وب سایت ارسال کنند. زمانی که مسیر را در فایل web.php تعریف می کنیم می توانیم توسط متدهای کلاس Route نوع درخواست ورودی را تعیین کنیم.

درخواست های نوع GET توسط متد ()get و از طریق آدرس URL و درخواست های نوع POST توسط متد ()post و از طریق فرم های اچ تی ام ال به وب سایت های لاراول فرستاده می شوند. زمانی که فرم های اچ تی ام ال را برای دریافت داده ها طراحی می کنید، حتما در صورت محرمانه بودن داده ها مانند گذرواژه، شماره ملی، آدرس منزل، ایمیل شخصی، شماره و اطلاعات کارت های بانکی، حتما و حتما از متد POST استفاده کنید.

اداره کردن درخواست های HTTP توسط کلاس Request

در مطلب نوشتن اولین کنترل گر توضیح دادیم که پس از ایجاد کنترل گر توسط دستور php artisan make:controller درون فایل ایجاد شده کلاس Request از لاراول ضمیمه خواهد شد. سپس اگر نیاز داریم تا به درخواست ورودی فعلی دسترسی داشته باشیم، می توانیم یک شی از نوع کلاس Request را به عنوان آرگومان ورودی به متد کلاس کنترل گر ارسال کنیم.

همانطور که در قطعه کد بالا می بینید یک آرگومان ورودی از نوع کلاس Request به نام request$ به متد ()store ارسال شده است. در قطعه کدهای بالا فرض شده است که از متد POST از پروتکل HTTP استفاده شده است و در واقع فرم اچ تی ام ال وجود دارد که در آن یک تگ از نوع input وجود دارد که خصوصیت name آن برابر با رشته name است. بنابراین مطابق کد زیر می توانیم به متدهای کلاس Request دسترسی داشته باشیم که متد ()input یکی از چندین متد کلاس Request است.

در کنار استفاده از کلاس های کنترل گر، می توانیم از توابع بی نام نیز برای دسترسی و اداره کردن درخواست فعلی استفاده کنیم. قطعه کد زیر مثالی را نشان می دهد که آرگومان اول تابع بی نام یک شی از کلاس Request است. توجه کنید حتما باید دستور ;use Illuminate\Http\Request را بنویسید تا بتوانید از کلاس Request در فایل web.php یا هر فایل دیگری استفاده کنید.

دریافت مسیر درخواست

همانطور که گفتیم کلاس Request دارای تعدادی متد است که هر یک برای منظور و کاربرد ویژه ای استفاده می شوند. یکی از این متدها، ()path نام دارد که اطلاعات مسیر درخواست فعلی را بر می گرداند. بنابراین اگر فرض کنیم درخواست فعلی از طریق مسیر http://127.0.0.1:8000/foo/bar ارسال شده باشد، پس متد ()path مقدار foo/bar را بر می گرداند.

دریافت آدرس URL

متد ()path در واقع مسیر نوشته شده درون فایل web.php را برگشت می دهد ولی اگر بخواهیم آدرس URL کامل وارد شده در مرورگر را پیدا کنیم که درخواست فعلی از طریق آن ارسال شده است باید متد ()fullUrl را به کار ببریم.

متد دیگری که وجود دارد، ()url نام دارد. در واقع هر دو متد ()fullUrl و ()url آدرس کامل URL را بر می گردانند، با این تفاوت که خروجی متد ()fulUrl حاوی رشته کوئری نیز است ولی خروجی متد ()url دیگر شامل رشته کوئری نمی شود.

تطابق مسیر ورودی با یک الگو

متد ()is از کلاس Request این امکان را می دهد تا بررسی کنیم که آیا مسیر ورودی برای درخواست فعلی مطابق با یک الگو (Pattern) است یا نه؟ به طور مثال در کد زیر به دلیل استفاده از علامت * الگویی که تعیین کردیم می تواند تنها شامل مسیر admin یا تمام مسیرهایی باشد که با admin شروع می شوند.

بنابراین خروجی متد ()is به صورت true یا false است. همچنین می خواهیم بررسی کنیم که آیا مسیر ورودی برابر با مسیر login است، پس می توانیم از قطعه کد زیر برای بررسی این موضوع استفاده کنیم.

پیدا کردن متد درخواست HTTP

همانطور که در ابتدای همین مطلب نیز مشخص است، انواع متدها یا روش های درخواست در پروتکل HTTP وجود دارند که دو نوع معروف آنها، متدهای GET و POST هستند. اگر بخواهید درون کنترل گر یا تابع بی نام خود بررسی کنید که نوع متد درخواستی کدام نوع است می توانید از متد ()isMethod استفاده کنید. به طور مثال کدهای زیر بررسی می کنند که آیا متد از نوع های GET و POST است.

امااگر می خواهید متد درخواست را پیدا کنید، پس باید متد ()method را به کار ببرید. در واقع متد ()method از کلاس Request یک رشته را بر می گرداند که متد درخواست را تعیین می کند.

برای درک بهتر می توانید قطعه کد زیر را به عنوان نمونه امتحان کنید. در کد زیر دو مسیر نوشته شده است، یکی از نوع GET و دیگری از نوع POST که به ترتیب مسیرهای get_method و post_method را شامل می شوند. در صورتی که هر یک از آدرس های http://127.0.0.1:8000/get_method یا http://127.0.0.1:8000/post_method را امتحان کنید باید نوع متد مربوطه نشان داده شوند. همچنین برای درک بهتر خودتان دیگر متدهای بالا را امتحان کنید. توجه کنید که به جای نامگذاری متغیر request$ از نامگذاری req$ استفاده کرده ایم.

در نوشته های پیش رو در مورد دریافت داده های ورودی از فرم های اچ تی ام ال و دسترسی به داده های ارسال شده از درون کنترل گرها صحبت می کنیم.

دانلود کد Laravel Http Requests

فرستادن داده بوسیله آدرس URL به سایت – متد GET