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

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

تبریک، در این راه با یادگیری Symfony به یک توسعه دهنده محبوب، پخته و سازنده‌تر تبدیل خواهید شد (در هر صورت شما تصمیم گیرنده خواهید بود). Symfony برای بازگشت به اصول اساسی ساخته شده است:‌ به منظور توسعه ابزارهایی که این اجازه را به شما می دهد تا برنامه های کاربردی قوی‌تر و سریعتر را بدون خارج شدن از مسیر خود توسعه دهید.Symfony بر پایه بهترین ایده‌های تکنولوژی ساخته شده است: ابزارها و مفاهیمی که برای یادگیری شما آماده شده است حاصل تلاش چندین سال از توسعه دهندگان است. به عبارتی، شما نه تنها Symfony را می آموزید، بلکه اصول پایه‌ای وب، راه و روش توسعه و چگونگی استفاده بسیاری از کتابخانه های PHP در حوزه سمفونی یا خارج سیمفونی را نیز فرا می گیرید. آماده اید که شروع کنیم؟

 

[alert type=”success”]این مقاله از مستندات Symfony ترجمه شده است و در سه بخش ارائه خواهد شد! [/alert]

 

این بخش را با توضیح مفاهیم اساسی رایج در توسعه وب آغاز می شود: HTTP. صرف نظر از هر پس زمینه یا زبان برنامه‌نویسی مورد علاقه، خواندن این فصل برای همه پیشنهاد می شود!


 

 HTTP ساده است

 

HTTP – Hypertext Transfer Protocol یک زبان منتی است که به دو دستگاه این اجازه را می دهد تا با یکدیگر ارتباط برقرار کنند. همین! به عنوان مثال وقتی آخرین مطالب کمیک xkcd را چک می کنید، تقریبا گفتگو زیر اتفاق می افتد:

 

HTTP چیست؟

 

البته زبان استفاده شده کمی رسمی‌تر اما با این حال بسیار ساده است. HTTP در طول زمان از این زبان ساده بر پایه متن استفاده کرده است. مهم نیست که چطور وب را توسعه می دهید، هدف سرور شما همیشه درک متن ساده درخواست (request) و برگشت دادن پاسخ (response) متنی است.

فریم ورک symfony

Symfony تا حدودی با این واقعیت ساخته شده است. چه این قبول کنید یا نه، HTTP چیزی است که هر روز از آن استفاده می کنیم. با سیمفونی یاد خواهید گرفت چطور استاد آن شوید!


 

 

مرحله اول: کلاینت یک درخواست ارسال می کند

 

هر مکالمه در وب با یک درخواست (request) آغاز می شود. request پیام متنی است که توسط client ایجاد می شود (به عنوان مثال: مرورگر، یک برنامه تلفن همراه هوشمند و غیره). کلاینت آن درخواست را به یک سرور ارسال می کند و متنظر پاسخ (response) می ماند.

 

اجازه دهید نگاهی به اولین بخش از تعامل (request) بین یک مرورگر و وب سرور xkcd بیندازیم:

 

HTTP در Symfony

 

به زبان HTTP، این درخواست HTTP در واقع چیزی شبیه به زیر است:

این پیام ساده تمام چیزهای ضروری برای ارتباط در مورد چیزی که کلاینت درخواست کرده است را نشان می دهد. اولین خط از هر درخواست HTTP بسیار مهم است و شامل دو چیز است: URI و متد HTTP.

 

URL آدرس منحصر به فرد یا موقعیتی است که منابعی (resouce) که کلاینت می خواهد را شناسایی می کند.  به عنوان مثال آدرس های زیر:

HTTP METHOD (به عنوان مثال GET) مشخص می کند که با منابع چه کاری می خواهید انجام دهید. متدهای HTTP برای توصیف request استفاده می شوند و چندین روش معمول برای انجام عملیات لازم بر روی منابع ارائه می دهد:

با این اوصاف، می توانید تصور کنید که یک درخواست HTTP برای پاک کردن یک پست بلاگ به چه صورت خواهد بود، به عنوان مثال:

 

در واقع 9 متد تعریف شده برای HTTP وجود دارد، اما بیشتر آنها دیگر پشتیبانی نمی شوند. در واقع، بسیاری از مرورگرهای مدرن تنها POST و GET در در فرم‌های HTML پشتیبانی می کنند. بقیه آنها XMLHttpRequest ها و توسط روترهای سیمفونی پشتیبانی می شوند.

علاوه بر این در خط اول، یک درخواست HTTP شامل اطلاعاتی است که سر صفحه درخواست (request header) نامیده می شود. هدر می تواند طیف گسترده ای از اطلاعات مثل هاست درخواست شده (Host)، فرمت response که کاربر قبول می کند (Accept) و برنامه ای که کلاینت با آن request ایجاد کرده است (User-Agent). هدرهای دیگری نیز وجود دارند که می توانید لیست آنها را در مقاله‌ای در ویکیپدیا مشاهده کنید.


 

 

مرحله دوم: سرور یک پاسخ برگشت می دهد

 

وقتی سرور درخواستی را دریافت می کند، دقیقا می داند که کلاینت چه منابعی (از طریق URI) را نیاز دارد و چه کاری را می خواهد با منابع (از طریق متدها) انجام دهد. به عنوان مثال، در این مورد درخواست GET است، سرور منابع را آماده می کند و  یک پاسخ HTTP بر می گرداند. در زیر، پاسخی که از وب سرور xkcd می آید را در نظر بگیرید:

 

HTTP چیست؟

 

به HTTP ترجمه شده است، پاسخ (response) ارسال شده به مرورگر شبیه به زیر خواهد بود:

پاسخ HTTP شامل منابع درخواست شده (در این مثال محتوا HTML است) همراه با دیگر اطلاعات در مورد response است. اولین خط بسیار مهم است و شامل کد وضعیت پاسخ HTTP است (در این مثال کد وضعیت 200 است). کد وضعیت (status code) نتیجه درخواست به کلایت است. که آیا درخواست موفقیت آمیز بوده است یا نه! آیا خطایی رخ داده است؟ کدها وضعیت مختلفی را برای نشان دادن با موفقیت انجام شده، خطا یا که کلاینت نیاز به انجام کاری دارد (به عنوان مثال انتقال به یک صفحه دیگر). لیست کامل کدهای وضعیت را می توانید از این مقاله مشاهده کنید.

 

همانند یک request، یک HTTP response شامل بخش های اضافی از اطلاعات شناخته شده به عنوان هدر HTTP است. به عنوان مثال Content-Type یکی از هدرهای پاسخ HTTP است. body همان منابع یکسان می تواند در فرمت‌های مختلف مثل HTML، XML یا JSON برگشت داده شود و هدر Content-Type از انواع رسانه های مثل text/html استفاده می کند تا به کلاینت گفته شود چه فرمتی برگشت داده می شود. می توانید لیست کامل انواع رسانه ها را مشاهده کنید.

 

تعدادی هدر دیگر نیز وجود دارد که برخی از آنها بسیار قدرتمند هستند. به عنوان مثال، هدر خاصی می تواند در ساخت یک سیستم ذخیره قدرتمند مورد استفاده قرار گیرد.