
متدهای HTTP و کدهای وضعیت چیست؟ معرفی کامل و کاربردی
در ارتباط HTTP، کلاینت باید مشخص کند که چه کاری از سرور میخواهد. برای مثال، ممکن است بخواهد اطلاعاتی را دریافت کند، اطلاعات جدیدی ثبت کند یا یک منبع را حذف کند. متدهای HTTP نوع این عملیات را مشخص میکنند.
سرور نیز پس از دریافت و بررسی درخواست، نتیجه را در قالب یک پاسخ برمیگرداند. کد وضعیت HTTP بخشی از این پاسخ است و مشخص میکند که درخواست موفق بوده، به اقدام دیگری نیاز دارد یا با خطا روبهرو شده است. در قسمت سوم دوره آموزش پروتکل HTTP، با مفهوم HTTP Method و Status Code آشنا میشویم. سپس متدهای GET، POST، PUT و DELETE و کدهای وضعیت پرکاربرد مانند 200، 404 و 500 را بررسی میکنیم.
متد HTTP چیست؟
متد HTTP یا HTTP Method نوع عملی را مشخص میکند که کلاینت میخواهد روی یک منبع انجام دهد. این منبع میتواند یک صفحه، محصول، کاربر، مقاله، فایل یا هر نوع اطلاعات دیگری باشد.
هر درخواست HTTP یک متد دارد. سرور با بررسی این متد متوجه میشود که هدف درخواست چیست. برای مثال، یک درخواست ممکن است برای دریافت فهرست محصولات ارسال شود و درخواست دیگری برای ثبت یک محصول جدید باشد. متدهای HTTP مختلفی وجود دارند که از میان آنها میتوان به موارد زیر اشاره کرد:
- GET: دریافت اطلاعات از سرور
- POST: ارسال و ثبت اطلاعات جدید
- PUT: بهروزرسانی یا جایگزینی اطلاعات موجود
- DELETE: حذف یک منبع
- PATCH: تغییر بخشی از اطلاعات یک منبع
- HEAD: دریافت هدرهای پاسخ بدون محتوای اصلی
- OPTIONS: بررسی روشهای ارتباطی پشتیبانیشده
در این قسمت بیشتر روی چهار متد پرکاربرد GET، POST، PUT و DELETE تمرکز میکنیم.
متد GET چیست؟
از متد GET برای دریافت اطلاعات از سرور استفاده میکنیم. زمانی که صفحهای را در مرورگر باز میکنید، مرورگر معمولاً یک درخواست GET برای دریافت محتوای آن صفحه ارسال میکند.
برای مثال، یک فروشگاه اینترنتی میتواند با درخواست زیر اطلاعات محصول شماره 25 را از سرور دریافت کند:
GET /products/25این درخواست از سرور میخواهد اطلاعات محصولی با شناسه 25 را برگرداند. سرور پس از پیدا کردن محصول، اطلاعات آن را در پاسخ قرار میدهد. متد GET در موقعیتهای مختلفی کاربرد دارد:
- دریافت یک صفحه از سایت
- دریافت فهرست محصولات
- مشاهده اطلاعات یک کاربر
- دریافت مقالههای سایت
- جستوجو و فیلترکردن اطلاعات
- دریافت اطلاعات از API
درخواست GET باید برای خواندن اطلاعات استفاده شود و نباید تغییری در منبع ایجاد کند. برای مثال، مشاهده یک محصول نباید باعث ویرایش یا حذف آن شود.
متد POST چیست؟
از متد POST معمولاً برای ارسال اطلاعات به سرور و ایجاد یک منبع جدید استفاده میکنیم. اطلاعات فرمها نیز در بسیاری از موارد با این متد برای سرور ارسال میشوند. برای مثال، درخواست زیر میتواند برای ثبت یک محصول جدید ارسال شود:
POST /productsاطلاعات محصول مانند نام، قیمت و توضیحات همراه درخواست ارسال میشوند. سرور این اطلاعات را بررسی میکند و در صورت معتبر بودن، محصول جدید را ثبت میکند. متد POST کاربردهای مختلفی دارد:
- ثبتنام یک کاربر جدید
- ارسال فرم تماس
- ایجاد محصول یا مقاله
- ثبت سفارش
- ارسال نظر
- آپلود فایل
- ارسال اطلاعات برای پردازش
درخواستهای POST معمولاً اطلاعات را در بدنه درخواست یا Request Body قرار میدهند. شکل و نوع این اطلاعات به سایت، API و نوع داده مورد استفاده بستگی دارد.
تفاوت متدهای GET و POST چیست؟
GET و POST دو متد بسیار پرکاربرد HTTP هستند، اما هدف یکسانی ندارند. GET برای دریافت اطلاعات استفاده میشود، درحالیکه POST معمولاً اطلاعات جدیدی را برای پردازش یا ثبت به سرور میفرستد.
| ویژگی | GET | POST |
|---|---|---|
| هدف اصلی | دریافت اطلاعات | ارسال یا ثبت اطلاعات |
| تغییر اطلاعات سرور | نباید اطلاعات را تغییر دهد | میتواند اطلاعات جدیدی ایجاد کند |
| محل معمول اطلاعات | آدرس و Query String | بدنه درخواست |
| نمونه کاربرد | دریافت فهرست محصولات | ثبت یک محصول جدید |
| قابلیت کششدن | معمولاً میتواند کش شود | معمولاً کش نمیشود |
قرارگرفتن اطلاعات در بدنه درخواست POST به معنی رمزنگاری آنها نیست. برای محافظت از اطلاعات در مسیر انتقال باید از HTTPS استفاده شود.
متد PUT چیست؟
از متد PUT برای بهروزرسانی یا جایگزینکردن اطلاعات یک منبع موجود استفاده میکنیم. در این درخواست معمولاً شناسه منبع در آدرس قرار میگیرد.
برای مثال، درخواست زیر میتواند اطلاعات محصول شماره 25 را بهروزرسانی کند:
PUT /products/25اطلاعات جدید محصول همراه درخواست ارسال میشوند. سرور محصول موردنظر را پیدا میکند و اطلاعات آن را با دادههای دریافتشده بهروزرسانی میکند. در طراحی بسیاری از APIها، PUT برای ارسال نسخه کامل و جدید یک منبع استفاده میشود. برای تغییر فقط بخشی از اطلاعات نیز ممکن است از متد PATCH استفاده شود. بااینحال، نحوه دقیق استفاده از این متدها به طراحی API بستگی دارد.
متد DELETE چیست؟
از متد DELETE برای حذف یک منبع از سرور استفاده میکنیم. آدرس درخواست معمولاً مشخص میکند که کدام منبع باید حذف شود. برای نمونه، درخواست زیر میتواند حذف محصول شماره 25 را از سرور درخواست کند:
DELETE /products/25سرور ابتدا درخواست و دسترسی کاربر را بررسی میکند. اگر محصول وجود داشته باشد و کاربر اجازه حذف آن را داشته باشد، سرور عملیات حذف را انجام میدهد. ارسال درخواست DELETE همیشه به معنی حذف قطعی اطلاعات از پایگاه داده نیست. بعضی برنامهها اطلاعات را بهصورت نرم حذف میکنند؛ یعنی رکورد باقی میماند اما دیگر در بخشهای معمول برنامه نمایش داده نمیشود.
مقایسه متدهای GET، POST، PUT و DELETE
| متد | کاربرد اصلی | نمونه آدرس | نتیجه مورد انتظار |
|---|---|---|---|
| GET | دریافت اطلاعات | /products/25 | نمایش اطلاعات محصول |
| POST | ایجاد اطلاعات جدید | /products | ثبت محصول جدید |
| PUT | بهروزرسانی اطلاعات | /products/25 | ویرایش محصول شماره 25 |
| DELETE | حذف اطلاعات | /products/25 | حذف محصول شماره 25 |
این متدها در APIها معمولاً برای انجام عملیات اصلی روی اطلاعات استفاده میشوند. بااینحال، سرور باید برای هر آدرس و متد، رفتار مناسب را تعریف کرده باشد.
متدهای HTTP چه ارتباطی با درخواست دارند؟
متد بخشی از درخواست HTTP است و هدف آن را مشخص میکند. آدرس درخواست منبع موردنظر را نشان میدهد و متد تعیین میکند که کلاینت میخواهد چه عملی روی آن منبع انجام دهد. برای مثال، دو درخواست زیر آدرس مشابهی دارند، اما به دلیل تفاوت متد، هدف آنها متفاوت است:
GET /products/25
DELETE /products/25درخواست اول اطلاعات محصول شماره 25 را میخواهد، اما درخواست دوم حذف همان محصول را درخواست میکند. بنابراین، سرور برای تشخیص عملیات فقط آدرس را بررسی نمیکند و متد درخواست نیز اهمیت دارد. بدنه درخواست، هدرها، اطلاعات ورود کاربر و مجوزهای دسترسی نیز میتوانند در تصمیم سرور نقش داشته باشند. بااینحال، متد HTTP مشخصکننده نوع اصلی عملیات است.
کد وضعیت HTTP چیست؟
کد وضعیت HTTP یا HTTP Status Code یک عدد سهرقمی است که سرور آن را همراه پاسخ ارسال میکند. این عدد نتیجه کلی پردازش درخواست را مشخص میکند. کد وضعیت به کلاینت میگوید که درخواست با موفقیت انجام شده، به هدایت نیاز دارد، مشکل از درخواست بوده یا سرور هنگام پردازش با خطا روبهرو شده است. برای مثال:
- کد 200 معمولاً موفقیت درخواست را نشان میدهد.
- کد 404 نشان میدهد منبع موردنظر پیدا نشده است.
- کد 500 از بروز یک خطای داخلی در سرور خبر میدهد.
برنامهها و مرورگرها با بررسی این کدها میتوانند تصمیم بگیرند که پاسخ را چگونه پردازش یا نمایش دهند.
دستهبندی کدهای وضعیت HTTP
کدهای وضعیت HTTP بر اساس رقم اول خود در پنج گروه قرار میگیرند. هر گروه مفهوم کلی خاصی دارد.
| دسته | عنوان | مفهوم کلی |
|---|---|---|
| 1xx | اطلاعاتی | درخواست دریافت شده و پردازش آن ادامه دارد |
| 2xx | موفقیت | سرور درخواست را با موفقیت دریافت و پردازش کرده است |
| 3xx | تغییر مسیر | کلاینت برای تکمیل درخواست باید اقدام دیگری انجام دهد |
| 4xx | خطای کلاینت | در درخواست یا دسترسی کلاینت مشکلی وجود دارد |
| 5xx | خطای سرور | سرور هنگام پردازش یک درخواست معتبر با مشکل روبهرو شده است |
کدهای وضعیت 1xx؛ پاسخهای اطلاعاتی
کدهای گروه 1xx نشان میدهند که سرور درخواست را دریافت کرده و فرایند ارتباط هنوز ادامه دارد. این کدها معمولاً پاسخ نهایی نیستند.
برای مثال، کد 100 Continue به کلاینت اعلام میکند که میتواند ارسال ادامه درخواست را انجام دهد. کاربران معمولاً این گروه از کدها را هنگام کار عادی با مرورگر مشاهده نمیکنند.
کدهای وضعیت 2xx؛ درخواستهای موفق
کدهای گروه 2xx نشان میدهند که سرور درخواست را با موفقیت دریافت و پردازش کرده است. نوع دقیق موفقیت به کد ارسالشده بستگی دارد.
- 200 OK: درخواست با موفقیت انجام شده است.
- 201 Created: سرور منبع جدیدی را با موفقیت ایجاد کرده است.
- 204 No Content: درخواست موفق بوده، اما پاسخ محتوایی ندارد.
برای مثال، سرور میتواند برای دریافت موفق اطلاعات با GET کد 200 و برای ایجاد یک منبع جدید با POST کد 201 را ارسال کند.
کدهای وضعیت 3xx؛ تغییر مسیر
کدهای گروه 3xx معمولاً نشان میدهند که منبع به آدرس دیگری منتقل شده یا کلاینت برای تکمیل درخواست باید اقدام دیگری انجام دهد.
- 301 Moved Permanently: منبع بهصورت دائمی منتقل شده است.
- 302 Found: منبع بهصورت موقت در آدرس دیگری قرار دارد.
- 304 Not Modified: محتوای ذخیرهشده کلاینت هنوز قابل استفاده است.
مرورگرها معمولاً تغییر مسیر را بهصورت خودکار دنبال میکنند. به همین دلیل، ممکن است کاربر متوجه دریافت این کدها نشود.
کدهای وضعیت 4xx؛ خطاهای کلاینت
کدهای گروه 4xx نشان میدهند که سرور به دلیل وجود مشکلی در درخواست، آدرس یا دسترسی کلاینت نمیتواند عملیات را انجام دهد.
- 400 Bad Request: درخواست ساختار یا اطلاعات معتبری ندارد.
- 401 Unauthorized: کلاینت باید هویت خود را تأیید کند.
- 403 Forbidden: سرور درخواست را درک کرده، اما اجازه انجام آن را نمیدهد.
- 404 Not Found: منبع موردنظر پیدا نشده است.
- 405 Method Not Allowed: متد استفادهشده برای این منبع مجاز نیست.
برای مثال، اگر کاربر آدرس محصولی را وارد کند که وجود ندارد، سرور میتواند کد 404 را برگرداند. اگر منبع وجود داشته باشد اما کاربر اجازه دسترسی به آن را نداشته باشد، کد 403 مناسبتر است.
کدهای وضعیت 5xx؛ خطاهای سرور
کدهای گروه 5xx نشان میدهند که سرور هنگام پردازش درخواست با مشکل روبهرو شده است. در این حالت، ممکن است درخواست کلاینت معتبر باشد، اما سرور نتواند آن را کامل کند.
- 500 Internal Server Error: خطای داخلی و پیشبینینشدهای در سرور رخ داده است.
- 502 Bad Gateway: سرور واسط پاسخ معتبری از سرور دیگر دریافت نکرده است.
- 503 Service Unavailable: سرویس در حال حاضر در دسترس نیست.
- 504 Gateway Timeout: سرور واسط در زمان مناسب پاسخی دریافت نکرده است.
خطاهای برنامهنویسی، قطعی سرویسهای وابسته، افزایش شدید درخواستها و مشکلات موقت زیرساخت میتوانند باعث ایجاد کدهای گروه 5xx شوند.
کدهای وضعیت پرکاربرد HTTP
| کد وضعیت | عنوان | مفهوم | نمونه کاربرد |
|---|---|---|---|
| 200 | OK | درخواست با موفقیت انجام شده است | دریافت اطلاعات یک محصول |
| 201 | Created | منبع جدید با موفقیت ایجاد شده است | ثبت کاربر یا محصول جدید |
| 204 | No Content | عملیات موفق بوده، اما محتوایی بازگردانده نمیشود | حذف یا ویرایش موفق اطلاعات |
| 301 | Moved Permanently | منبع برای همیشه به آدرس دیگری منتقل شده است | تغییر دائمی آدرس یک صفحه |
| 400 | Bad Request | اطلاعات یا ساختار درخواست معتبر نیست | ارسال داده ناقص یا نامعتبر |
| 401 | Unauthorized | تأیید هویت لازم است | درخواست بدون اطلاعات ورود معتبر |
| 403 | Forbidden | کاربر اجازه دسترسی به منبع را ندارد | ورود کاربر عادی به بخش مدیریت |
| 404 | Not Found | منبع موردنظر پیدا نشده است | درخواست یک صفحه یا محصول ناموجود |
| 405 | Method Not Allowed | متد درخواست برای این آدرس مجاز نیست | ارسال DELETE به منبعی که حذف را نمیپذیرد |
| 500 | Internal Server Error | هنگام پردازش درخواست خطایی در سرور رخ داده است | بروز خطای پیشبینینشده در برنامه |
| 503 | Service Unavailable | سرویس بهصورت موقت در دسترس نیست | تعمیرات یا فشار زیاد روی سرور |
کد وضعیت چه ارتباطی با پاسخ سرور دارد؟
کد وضعیت بخشی از پاسخ HTTP است. سرور پس از دریافت و پردازش درخواست، کدی را انتخاب میکند که نتیجه عملیات را بهدرستی نشان دهد. برای مثال، اگر کلاینت با متد GET اطلاعات یک محصول موجود را درخواست کند، سرور میتواند کد 200 را همراه اطلاعات محصول بفرستد. اگر محصول وجود نداشته باشد، پاسخ میتواند کد 404 داشته باشد.
همچنین اگر کلاینت با متد POST محصول جدیدی ایجاد کند، سرور میتواند کد 201 را ارسال کند. اگر اطلاعات ارسالی نامعتبر باشند، ممکن است پاسخ با کد 400 برگردد. در نتیجه، متد HTTP هدف درخواست را مشخص میکند و کد وضعیت نتیجه پردازش همان درخواست را نشان میدهد.
ارتباط متدهای HTTP با کدهای وضعیت
هر متد میتواند با توجه به نتیجه عملیات، کدهای وضعیت متفاوتی دریافت کند. یک کد مشخص همیشه به یک متد خاص محدود نیست، اما بعضی ترکیبها در سایتها و APIها رایجتر هستند. این جدول نمونههای رایج را نشان میدهد و یک قانون ثابت برای تمام پروژهها نیست. توسعهدهنده باید با توجه به نتیجه واقعی عملیات، کد وضعیت درست را انتخاب کند.
| متد | عملیات | پاسخ موفق رایج | پاسخ خطای احتمالی |
|---|---|---|---|
| GET | دریافت اطلاعات | 200 OK | 404 Not Found |
| POST | ایجاد اطلاعات جدید | 201 Created | 400 Bad Request |
| PUT | بهروزرسانی اطلاعات | 200 OK یا 204 No Content | 404 Not Found |
| DELETE | حذف اطلاعات | 200 OK یا 204 No Content | 404 Not Found |
چرا شناخت متدها و کدهای وضعیت مهم است؟
شناخت متدهای HTTP و کدهای وضعیت به برنامهنویس کمک میکند ارتباط میان کلاینت و سرور را بهتر درک کند. این مفاهیم هنگام طراحی سایت، ساخت API و بررسی خطاهای برنامه کاربرد زیادی دارند. با شناخت این مفاهیم میتوانید:
- هدف هر درخواست را سریعتر تشخیص دهید.
- APIهای منظمتر و قابلفهمتری طراحی کنید.
- دلیل خطاهای سایت یا برنامه را بهتر پیدا کنید.
- پاسخ سرور را بهدرستی در کلاینت پردازش کنید.
- از ابزارهای توسعهدهنده مرورگر بهتر استفاده کنید.
- میان خطای درخواست و خطای سرور تفاوت قائل شوید.
برای مثال، مشاهده کد 404 نشان میدهد که سرور منبع موردنظر را پیدا نکرده است. در مقابل، کد 500 نشان میدهد هنگام پردازش درخواست، مشکلی در سمت سرور رخ داده است.
جمعبندی
متد HTTP نوع عملی را مشخص میکند که کلاینت از سرور میخواهد. GET برای دریافت اطلاعات، POST برای ارسال یا ایجاد اطلاعات، PUT برای بهروزرسانی و DELETE برای حذف یک منبع کاربرد دارد.
کد وضعیت HTTP نتیجه پردازش درخواست را نشان میدهد. کدهای 1xx اطلاعاتی هستند، 2xx موفقیت را نشان میدهند، 3xx برای تغییر مسیر استفاده میشوند، 4xx به خطاهای مربوط به کلاینت اشاره دارند و 5xx خطاهای سمت سرور را مشخص میکنند. کدهای 200، 404 و 500 از شناختهشدهترین کدهای وضعیت هستند. کد 200 موفقیت درخواست، کد 404 پیدانشدن منبع و کد 500 بروز خطای داخلی در سرور را نشان میدهد.
در این قسمت با نقش متدها در درخواستهای HTTP و نقش کدهای وضعیت در پاسخهای سرور آشنا شدیم. در قسمتهای بعدی دوره، سایر بخشهای مهم ارتباط HTTP را بررسی میکنیم. برای مشاهده تمام جلسات وارد صفحه آموزش پروتکل HTTP شوید. همچنین برای مرور قسمت قبل میتوانید مقاله پروتکل HTTP و HTTPS چیست؟ را مطالعه کنید.























فرم افزودن دیدگاه
با ارسال نظرات خود ما را در ایجاد محتوای بهتر کمک کنید.