این مطالب بخشی از مجموعه "مقدمه ای بر توسعه سازمانی" است. مقالات قبلی:
شایان ذکر است که پروتکل HTTP فقط از متن تشکیل شده است. خب، ما بیشتر به ساختاری که این متن در آن قرار دارد علاقه مندیم. هر پیام از سه بخش تشکیل شده است:
- در مورد شبکه ؛
- در مورد معماری نرم افزار
پروتکل انتقال داده چیست؟
این نامی است که به توافق نامه پذیرفته شده عمومی داده شده است که به لطف آن توسعه دهندگان خدمات مختلف اطلاعات را در یک فرم ارسال می کنند. به عنوان مثال، با استفاده از Google Chrome، می توانید اطلاعات را از فیس بوک و توییتر دریافت کنید، زیرا توسعه دهندگان آن را با استفاده از پروتکل استاندارد HTTP انتقال می دهند و مرورگر شما می تواند آن را مدیریت کند. قوانین یکنواخت برای خود توسعه دهندگان سمت سرور نیز بسیار راحت است: کتابخانه های زیادی وجود دارند که می توانند اطلاعات را برای شما تبدیل کرده و با استفاده از پروتکل مورد نیاز ارسال کنند. HTTP در ابتدا به عنوان پروتکلی برای انتقال صفحات HTML در نظر گرفته شد. این مورد برای مدت طولانی بود، اما اکنون برنامه نویسان اغلب رشته ها و فایل های رسانه ای را روی آن انتقال می دهند. به طور کلی، این پروتکل همه کاره و انعطاف پذیر است و استفاده از آن واقعاً آسان است. حالا بیایید بفهمیم که چگونه این کار را انجام دهیم.
ساختار HTTP
شایان ذکر است که پروتکل HTTP فقط از متن تشکیل شده است. خب، ما بیشتر به ساختاری که این متن در آن قرار دارد علاقه مندیم. هر پیام از سه بخش تشکیل شده است:
- خط شروع - داده های سرویس را تعریف می کند.
- سرصفحه ها - شرح پارامترهای پیام.
- متن پیام (بدن) - داده پیام. باید با یک خط خالی از سرفصل ها جدا شود.
یک درخواست HTTP ساده چگونه به نظر می رسد
GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
خط شروع شامل:
- GET - روش درخواست؛
- / — مسیر درخواست (مسیر)؛
- HTTP/1.1 - نسخه پروتکل انتقال داده.
- میزبان - میزبانی که درخواست به آن خطاب می شود.
- User-Agent مشتری است که درخواست را ارسال می کند.
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com
{
"Id": 12345,
"User": "John"
}
درخواست به javarush.com/user/create/json ارسال می شود، نسخه پروتکل HTTP/1.1 است. Accept مشخص میکند که مشتری انتظار دارد چه قالب پاسخی را دریافت کند، Content-Type مشخص میکند که بدنه پیام در چه قالبی ارسال میشود. Content-Length - تعداد کاراکترهای موجود در بدنه. یک درخواست HTTP میتواند حاوی هدرهای مختلف باشد. جزئیات بیشتر را می توان در مشخصات پروتکل یافت .
پاسخ های HTTP
پس از دریافت درخواست، سرور آن را پردازش کرده و پاسخی را برای مشتری ارسال می کند:HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98
<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
خط شروع در پاسخ شامل نسخه پروتکل (HTTP/1.1)، کد وضعیت (200)، شرح وضعیت (OK) است. سرفصل ها نوع و طول مطالب را نشان می دهند. بدنه پاسخ حاوی کد HTML است که مرورگر به صفحه HTML می کشد.
کدهای وضعیت پاسخ
همه چیز با متن و هدر پیام واضح است، اما ارزش گفتن چند کلمه در مورد کدهای وضعیت را دارد. کدهای وضعیت پاسخ همیشه سه رقمی هستند و رقم اول کد، دسته بندی پاسخ را نشان می دهد:- 1xx - اطلاعاتی. درخواست دریافت شده است، سرور آماده ادامه است.
- 2xx - موفق درخواست دریافت، درک و پردازش شده است.
- 3xx - تغییر مسیر. برای پردازش درخواست باید مراحل زیر انجام شود.
- 4xx - خطای مشتری. درخواست حاوی خطاهایی است یا با پروتکل مطابقت ندارد.
- 5xx - خطای سرور. سرور قادر به پردازش درخواست نبود، اگرچه به درستی تشکیل شده بود.
- 200 OK - درخواست دریافت شد و با موفقیت پردازش شد.
- 201 Created - درخواست دریافت شد و با موفقیت پردازش شد که منجر به ایجاد یک منبع جدید یا نمونه آن شد.
- 301 انتقال دائمی - منبع درخواستی به طور دائم منتقل شده است و درخواست های بعدی باید در آدرس جدید انجام شود.
- 307 تغییر مسیر موقت - منبع به طور موقت منتقل شده است. در حال حاضر، می توانید با استفاده از تغییر مسیر خودکار به آن دسترسی داشته باشید.
- 403 ممنوع - درخواست واضح است، اما مجوز لازم است.
- 404 یافت نشد - سرور منبع را در این آدرس پیدا نکرد.
- 501 اجرا نشد - سرور از عملکردی برای پاسخ به این درخواست پشتیبانی نمی کند.
- نسخه 505 HTTP پشتیبانی نمی شود - سرور از نسخه مشخص شده پروتکل HTTP پشتیبانی نمی کند.
GO TO FULL VERSION