مقدمه
متدهای http یعنی چی؟ تفاوت get و post در درخواست های سمت سرور چه مفهومی رو در پی دارند؟
اگر شماهم مثل من چنین سوالاتی در ذهنتون هست پس خوندن ادامه مطلب رو به شما عزیزان توصیه میکنم...
چی شد که این مقاله رو نوشتم؟
من مشغول ضبط ویدیو برای دوره آموزش پروژه محور لاراول بودم که رسیدم به توضیح routeهای لاراول و با یک اشتباه در ویدیو به این نتیجه رسیدم که این مقاله رو بنویسم تا بقیه دوستان هم مثل من دچار اشتباه نشوند.
متدهای HTTP
HTTP یا Hypertext Transfer Protocol یک پروتکل استاندارد هستش که برای ایجاد و ارسال درخواست ها به سوی وب سرورها به وجود اومده است. وقتی از پروتکل حرف میزنیم یعنی اینکه این حرف ها یک قاعده و استاندارد از پیش تعیین هستند و اگر این هارو رعایت کنیم زندگی بهتری که خواهیم داشت هیچ، حرفه ای تر و تخصصی تر عمل کردیم. پس بدون معطلی بریم سراغ اینکه با مهم ترین متدهای HTTP آشنا بشیم.
البته مساله دیگری که برای متدهای HTTP مهم هست، کد وضعیت یا Status Code هستش که میتونید لیست کامل این کدهارو به همراه تفسیرشون از این لینک مطالعه کنید.
متد GET
یکی از پرکاربردترین متدهای HTTP، متد GET هستش که اگر کمی در زمینه توسعه وب یا API کار کرده باشید میدونید که وقتی بخوایم یک دیتایی رو از یک وب سرور دریافت کنیم از متد GET استفاده می کنیم، چرا جای دوری برم؟ مثال همین وبسایت خودم: شما روی لینک این مقاله کلیک کردید یک درخواست GET سمت وب سرور سرور من ارسال شد و نتیجه ای به شما نمایش داده شد.
همچنین در این متد ما برای ارسال پارامتر به وب سرور از کوئری استرینگ استفاده می کنیم که مثلا ساختاری شبیه به زیر داره:
https://www.google.com/search?q=mrmmg+website&oq=mrmmg+website
همونطور که میبینید یک نمونه سرچ در سایت گوگل هست که پارامترهاش رو به روش Query String ارسال کرده است.
متد POST
وقتی که بخوایم یک دیتایی رو به سمت وب سرور ارسال کنیم از متد POST استفاده می کنیم، مثلا پایین همین نوشته شما میتونید برای من کامنت بذارید و اتفاقی که میوفته این هست که مرورگر شما یک درخواست POST رو به همراه یک سری داده به سمت سرور من ارسال میکنه. نکته مهم این هست که این داده ها در بدنه درخواست (Request Body) ارسال میشن و به آسونی قابل تغییر نیستند و در این POST یک روش امن برای ارسال داده به سمت وب سرور هست.
راستی حالا که بحث این کامنت گذاشتن شد، حتما واسم کامنت بذارید خوشحال میشم
متد PUT
خیلی خیلی شبیه به متد POST عمل میکنه و برای آپدیت کردن محتوایی که روی سرور قرار داده استفاده میشه، برای مثال من الان در حال نوشتن این پست هستم و وقتی برای اولین بار این مطلب رو ذخیره میکنم متد POST هست و دفعات بعدی که این پست رو ویرایش میکنم از متد PUT استفاده میشه، حالا سوال پیش میاد که تفاوت بین POST و PUT در کجاست؟
خب باید بگم که اگر متد POST رو چندین بار صدا بزنیم مداوم اون دیتا تکراری در سمت سرور ذخیره میشه اما اگر متد PUT رو چندین بار با یک دیتای مشابه صدا بزنیم نتیجه یکسان هست و مداوم دیتای تکراری سمت سرور ذخیره نمیشه!
متد DELETE
واقعا انتظار خاصی جز حذف کردن از این متد دارید؟ اسمش روشه دیگه!!
وقتی این متد رو صدا میزنیم و یک دیتای خاصی رو بهش میدیم اون رو پیدا میکنه و اون رو واسمون از روی سرور حذف میکنه، همین
متد PATCH
یکی از متدهای کمتر شناخته شده HTTP همین متد PATCH هست، حتی خود من هم تا قبل از نوشتن این مقاله نمیدونستم که این متد چیکار میکنه و چرا وجود داره!
این متد برای آپدیت و بروزرسانی دیتاهای سمت سرور استفاده میشه، در واقع شبیه به PUT و POST عمل میکنه اما تفاوتش اینجاست که فرض کنید شما یک route دارید که میخواید با استفاده از اون صرفا ایمیل یک کاربر رو آپدیت کنید و مابقی دیتاهای کاربر ثابت بمونه در این صورت استفاده از متد PATCH نسبت به POST و PUT عقلانی تر به حساب میاد، چرا؟ چونکه فرضا اگر متدهای دیگه به جز PATCH استفاده کنیم شاید مجبور باشیم به همراه ایمیل کاربر، رمزعبور و نام و یک سری دیتای اضافی دیگه که اصلا برای آپدیت ایمیل نیاز نیست رو ارسال کنیم.
متوجه شدید چی میگم؟ اگر در مورد این متد سوالی واستون پیش اومد حتما از طریق کامنت ها این موضوع رو مطرح کنید! خجالت نکشید.
متدهای دیگر و جمع بندی
و اما تمام متدهای HTTP این هایی که گفتم نبودند و تعداد بیشتری از متدهای HTTP هستند که یادگیری اون ها واسه هر برنامه نویسی قطعا مفید خواهد بود، اگر برنامه Postman رو استفاده کرده باشید میتونید لیست کامل این متدهارو از طریق این نرم افزار هم ببینید.
دیدگاهها