مفاهیم HTTP از زبان Symfony – بخش دوم

مفاهیم HTTP از زبان Symfony – بخش دوم

درخواست‌ها و پاسخ‌ها و توسعه وب

 

مکالمه request-response فرآیند اساسی تمام ارتباطات بر روی وب است. و همانطور که مهم و قدرتمند است ساده نیز است.

 

این یک واقعیت مهم است: صرف نظر از زبان برنامه نویسی که استفاده می کنید، انواع مختلفی از برنامه ها که درست می کنید (وب، تلفن همراه، JSON API) یا فلسفه توسعه‌ای که دنبال می کنید، هدف نهایی یک نرم افزار همیشه درک هر درخواست (request) و ایجاد و برگشت دادن پاسخ (response) مناسب برای هر درخواست است.

 

معماری Symfony بسیار نزدیک به این واقعیت است.

 

برای یادگیری بیشتر در مورد مشخصات HTTP، نسخه اصلی HTTP 1.1 RFC یا HTTP Bis را مطالعه کنید که سعی شده مشخصات اصلی را به وضوخ توضیح دهد. یک ابزار عالی برای بررسی request و هدرهای  response افزونه Live HTTP Headers برای مرورگر فایرفاکس است.

 

Request و Response در PHP

 

خوب! حالا چطور هنگام استفاده از PHP می توانید با request و response تعامل داشته باشید؟ در واقع، با PHP خلاصه ای از کل این فرآیند را انجام خواهید داد:

 

 

شاید کمی عجیب به نظر برسد، در واقغ این برنامه کوچک اطلاعات را از درخواست HTTP دریافت می کند و با استفاده از آن یک پاسخ HTTP ایجاد می کند. به جای اینکه از پیام درخواست خام HTTP استفاده شود، PHP متغیرهای سراسری مثل $_SERVER و $_GET در اختیار شما قرار می دهد که شامل تمام اطلاعات لازم از request است. به همین ترتیب، به جای برگشت پاسخ در قالب متن ساده HTTP، می توانید از توابع header() برای ایجاد هدرهای response و چاپ محتوا که قرار است بخش متن response باشد استفاده شود. PHP یک پاسخ HTTP ایجاد خواهد کرد و آن را به کلاینت ارسال می کند:

 


 

Request و Response در Symfony

 

Symfony با استفاده از دو کلاس این امکان را به ما می دهد تا به سادگی با request و response تعامل داشته باشیم و روشی جایگزین برای PHP خام باشد! کلاس Request یک شی ساده از پیام های درخواست HTTP است. با استفاده از آن، شما تمام اطلاعات request را روی انگشتان خود خواهید داشت:

 

 

خبر خوب این است که، کلاس Request بسیاری از عملیات را در پس زمینه انجام می دهد که هرگز نیازی به نگرانی در مورد آنها نیست. به عنوان مثال، متد isSecure() سه مقدار مختلف را  در PHP بررسی می کند که نشان می دهد آیا کاربر با یک اتصال امن به سرور متصل شده است یا نه (به عنوان مثال HTTPS).

 

ParameterBag و خواص درخواست ها

همانطور که در بالا مشاهده کردید، متغیرهای سراسری $_GET و $_POST از طریق خواص عمومی query و request قابل دسترسی هستند. هر کدام از این اشیا یک شی PrameterBag است که دارای متدهایی مثل get()has()all() و غیره است. در واقع، هر خواص عمومی در مثال قبلی مورد استفاده قرار می گیرد.

 

کلاس Request همچنین دارای یک خواص عمومی attributes است که دارای داده‌های خاص مرتبط با نحوه کار برنامه را نگاه می دارد. برای سیمفونی، attributes مقادیر یکسان route مثل _controller و id و حتی نام مسیر یکسان (_route) را نگهداری می کند. بطور کل خواص attributes جایی است که می توانید اطلاعات خاص در مورد درخواست ها را ذخیره کنید.

 

سیمفونی همچنین کلاس Response را نیز ارائه می دهد:‌ یک PHP ساده به نمایندگی از پیام response. این به برنامه شما اجازه می دهد تا از رابط شی گرا برای ساخت response و ارسال آن به کلاینت استفاده کند:

 

 

اگر سیمفونی چیزی برای پیشنهاد نداشته باشد، در حال حاضر شما ابزاری در اختیار دارید که به راحتی می توانید به اطلاعات request دسترسی داشته باشید و از یک رابط شی گرایی برای ساخت response استفاده کنید. توجه داشته باشید که حتی اگر بسیاری از امکانات قدرتمند سیمفونی را یاد گرفته باشید، هدف اصلی برنامه شما همیشه درک درخواست و ایجاد پاسخ بر اساس منطق برنامه شما خواهد بود.

 

کلاس‌های Request و Response کامپوننت هایی مستقل همراه با نام HttpFoundation در سیمفونی قرار داده شده اند. این کامپوننت ها را می توان بطور کاملا مستقل از سیمفونی استفاده کرد و همچنین کلاس‌هایی را فراهم می کند که برای session و آپلود فایل کاربر دارد.

 

ادامه دارد …