Ushbu material "Korxonani rivojlantirishga kirish" seriyasining bir qismidir. Oldingi maqolalar:
Salom! Bugun biz HTTP va HTTPS protokollarini tushunamiz. Lekin birinchi navbatda, bir fikrga aniqlik kiritamiz: biz OSI modelining amaliy qatlamida tarmoq orqali ma'lumotlarni uzatish protokollari haqida gapiramiz. Esingizda bo'lsa, biz avvalgi maqolalardan birida OSI modelini muhokama qilgan edik. Va agar eslamasangiz, bu erda .
Darhol shuni ta'kidlash kerakki, HTTP protokoli faqat matndan iborat. Xo'sh, biz ushbu matn joylashgan tuzilishga qiziqamiz. Har bir xabar uch qismdan iborat:
Ma'lumotlarni uzatish protokoli nima
Bu umumiy qabul qilingan kelishuvga berilgan nom, buning yordamida turli xizmatlarni ishlab chiquvchilar ma'lumotni yagona shaklda yuboradilar. Masalan, Google Chrome-dan foydalanib, siz Facebook va Twitter-dan ham ma'lumot olishingiz mumkin, chunki ishlab chiquvchilar uni standart HTTP protokoli yordamida uzatadilar va brauzeringiz uni qayta ishlashi mumkin. Yagona qoidalar server tomonidagi ishlab chiquvchilarning o'zlari uchun ham juda qulaydir: siz uchun ma'lumotni o'zgartira oladigan va kerakli protokol yordamida jo'natadigan ko'plab kutubxonalar mavjud. HTTP dastlab HTML sahifalarini uzatish protokoli sifatida ishlab chiqilgan. Bu uzoq vaqt davomida shunday bo'lgan, ammo endi dasturchilar ko'pincha u orqali ikkala satr va media fayllarni o'tkazishadi. Umuman olganda, ushbu protokol ko'p qirrali va moslashuvchan va undan foydalanish juda oson. Endi buni qanday qilishni aniqlaylik.
HTTP tuzilishi
Darhol shuni ta'kidlash kerakki, HTTP protokoli faqat matndan iborat. Xo'sh, biz ushbu matn joylashgan tuzilishga qiziqamiz. Har bir xabar uch qismdan iborat:
- Boshlang'ich qator - xizmat ma'lumotlarini belgilaydi.
- Sarlavhalar - xabar parametrlarining tavsifi.
- Xabar tanasi (Body) - xabar ma'lumotlari. Sarlavhalardan bo'sh qator bilan ajratilishi kerak.
Oddiy HTTP so'rovi qanday ko'rinadi
GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Boshlang'ich qatorda quyidagilar mavjud:
- GET - so'rov usuli;
- / — soʻrov yoʻli (yoʻl);
- HTTP/1.1 - ma'lumotlarni uzatish protokolining versiyasi.
- Xost - so'rov yuboriladigan xost;
- User-Agent so'rov yuboradigan mijozdir.
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com
{
"Id": 12345,
"User": "John"
}
So'rov javarush.com/user/create/json manziliga yuboriladi, protokol versiyasi HTTP/1.1. Qabul qilish mijoz qanday javob formatini olishni kutayotganini, Content-Type esa xabarning qaysi formatda yuborilishini belgilaydi. Content-Length - tanadagi belgilar soni. HTTP so'rovi turli xil sarlavhalarni o'z ichiga olishi mumkin. Batafsil ma'lumotni protokol spetsifikatsiyasida topishingiz mumkin .
HTTP javoblari
So'rovni olgandan so'ng, server uni qayta ishlaydi va mijozga javob yuboradi: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>
Javobdagi boshlang'ich qatorda protokol versiyasi (HTTP/1.1), Status Code (200), Status Description (OK) mavjud. Sarlavhalar tarkibning turi va uzunligini ko'rsatadi. Javobning asosiy qismida brauzer HTML sahifasiga tortadigan HTML kod mavjud.
Javob holati kodlari
Xabar tanasi va sarlavhalari bilan hamma narsa aniq, ammo holat kodlari haqida bir necha so'z aytishga arziydi. Javob holati kodlari har doim uchta raqamdan iborat bo'lib, kodning birinchi raqami javob toifasini bildiradi:- 1xx - ma'lumot. So'rov qabul qilindi, server davom etishga tayyor;
- 2xx - muvaffaqiyatli. So'rov qabul qilingan, tushunilgan va ko'rib chiqilgan;
- 3xx - qayta yo'naltirish. So'rovni ko'rib chiqish uchun quyidagi bosqichlarni bajarish kerak;
- 4xx - mijoz xatosi. So'rovda xatolar mavjud yoki protokolga mos kelmaydi;
- 5xx - server xatosi. Server so'rovni qayta ishlay olmadi, garchi u to'g'ri tuzilgan bo'lsa;
- 200 OK — soʻrov qabul qilindi va muvaffaqiyatli qayta ishlandi;
- 201 Yaratilgan — soʻrov qabul qilindi va muvaffaqiyatli qayta ishlandi, natijada yangi resurs yoki uning namunasi yaratildi;
- 301 Doimiy ko'chirildi - so'ralgan resurs doimiy ravishda ko'chirildi va unga keyingi so'rovlar yangi manzilda amalga oshirilishi kerak;
- 307 Vaqtinchalik qayta yo'naltirish - resurs vaqtincha ko'chirildi. Hozircha siz unga avtomatik yo'naltirish yordamida kirishingiz mumkin;
- 403 Taqiqlangan - so'rov aniq, lekin avtorizatsiya talab qilinadi;
- 404 topilmadi - server ushbu manzildagi manbani topa olmadi;
- 501 Amalga oshirilmadi - server ushbu so'rovga javob berish funksiyasini qo'llab-quvvatlamaydi;
- 505 HTTP versiyasi qo'llab-quvvatlanmaydi - server HTTP protokolining belgilangan versiyasini qo'llab-quvvatlamaydi.
GO TO FULL VERSION