HTTP چیه؟
برای اینکه نحوه کار REST رو متوجه بشیم، مهمه که اول در مورد تکنولوژی پشت وب جهانی / World Wide Web (WWW) و نحوه شناسایی شدن و ارتباط منابع با همدیگه رو بدونیم. به طور خیلی خلاصه، این HTTP (HyperText Transfer Protocol) هست که تعیین میکنه مرورگر ها و سرور ها باید چه کاری موقع مواجه شدن با پاسخ به دستورات مختلف انجام بدن
منابعی مثل صفحه های HTML، عکس ها، سند ها یا فایلهای ویدیویی با استفاده از یک URL (Uniform Resource Locator) شناسایی میشن. URL ها دارای قسمت های زیر هستن:
۱- شناسه پروتکل / Protocol Identifier: معمولا http (غیرامن) و https (برای ارتباط امن)
۲- اسم هاست / Host Name: مکان آیپی آدرس یا اسم دامنه رو مشخص میکنه
۳- پورت / Port (اختیاری): اگه هیچ پورتی تعیین نشده باشه، به طور پیش فرض پورت ۸۰ برای http و پورت ۴۴۳ برای https در نظر گرفته میشه
۴- مسیر / Path: مسیر یک فایل یا مکان روی سرور
۵- کوئری / Query: پارامتر های توی یک متن کوئری که بعد از یک علامت سوال میان. اسم پارامتر با علامت مساوی از مقدارش جدا میشه و در صورت وجود بیش از یک پارامتر، پارامتر ها با & از هم جدا میشن.
اکثر REST API ها با URL هایی بیشتر کار میکنن که شناسه های مختلف رو با قسمت های دیگه ای از URL به غیر از پارامتر های متن کوئری ترکیب کرده باشن، مثل http://example.com/user/1234.
معمولا URL بالا بجای یه چیزی مثل http://example.com/user?user_id=1234 ترجیح داده میشه. با این حال میشه از این فرمت هم استفاده کرد و این هم قطعا میتونه RESTful باشه!
توی سطح پایه، REST با کمک افعال HTTP یا HTTP verbs برای انجام عملیات با دیتا و منابع مختلف استفاده میکنه:
از GET برای دریافت منبع، PUT برای منبع دیتا، POST برای ایجاد منبع جدید و از DELETE برای حذف دیتا استفاده میشه.
همچنین درخواست های HTTP به مقدار های مختلف قرار داده شده در هدر ها هم نیاز دارن. فرمت هدر های HTTP حاوی جفت های key/value هست که با دو نقطه جدا شدن. مثلا برای اینکه نشون بدید که میخواید دیتایی که توی HTTP response مربوط به درخواستتون فرستاده میشه با فرمت JSON باشه، معمولا باید این هدر رو تنظیم کنید:
Accept: application/json