Бул материал "Ишкананы өнүктүрүүгө киришүү" сериясынын бир бөлүгү болуп саналат. Мурунку макалалар:
Салам! Бүгүн биз HTTP жана HTTPS протоколдорун түшүнөбүз. Бирок, адегенде, бир жагдайды тактап алалы: биз OSI моделинин колдонмо катмарында тармак аркылуу маалыматтарды берүү протоколдору жөнүндө болуп жатат. Эсиңиздерде болсо, OSI моделин мурунку макалалардын биринде талкуулаганбыз. Ал эми эсиңизде жок болсо, бул жерде .
Дароо белгилей кетүү керек, HTTP протоколу тексттен гана турат. Ооба, бизди бул тексттин кайсы структурада турганы кызыктырат. Ар бир билдирүү үч бөлүктөн турат:
Маалыматтарды өткөрүү протоколу деген эмне
Бул жалпы кабыл алынган келишимге берилген аталыш, анын аркасында ар кандай кызматтарды иштеп чыгуучулар маалыматты бирдиктүү формада жөнөтүшөт. Мисалы, Google Chrome колдонуп, сиз Facebook жана Twitterден да маалымат ала аласыз, анткени иштеп чыгуучулар аны стандарттык HTTP протоколу аркылуу өткөрүп беришет жана сиздин браузериңиз аны башкара алат. Бирдиктүү эрежелер serverдик иштеп чыгуучулардын өздөрү үчүн да абдан ыңгайлуу: сиз үчүн маалыматты өзгөртүп, керектүү протоколду колдонуу менен жөнөтө турган көптөгөн китепканалар бар. HTTP башында HTML барактарды өткөрүп берүү үчүн протокол катары иштелип чыккан. Бул узак убакыт бою болгон, бирок азыр программисттер көп саптарды жана медиа файлдарды анын үстүнөн өткөрүп беришет. Жалпысынан алганда, бул протокол ар тараптуу жана ийкемдүү жана аны колдонуу чындап эле оңой. Эми муну кантип жасоо керектигин карап көрөлү.
HTTP структурасы
Дароо белгилей кетүү керек, HTTP протоколу тексттен гана турат. Ооба, бизди бул тексттин кайсы структурада турганы кызыктырат. Ар бир билдирүү үч бөлүктөн турат:
- Башталгыч линия—кызмат маалыматтарын аныктайт.
- Headers - билдирүү параметрлеринин сүрөттөлүшү.
- Кабардын денеси (Тенеси) - билдирүү маалыматтары. Баш саптардан бош сызык менен бөлүнүшү керек.
Жөнөкөй 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 - маалыматтарды өткөрүп берүү протоколунун versionсы.
- Хост — суроо-талап жөнөтүлгөн хост;
- Колдонуучу-Агент - бул суроо-талапты жөнөтүүчү кардар.
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 дарегине жөнөтүлөт, протоколдун versionсы HTTP/1.1. Кабыл алуу кардар кандай жооп форматын күтөрүн, Content-Type билдирүүнүн тексти кандай форматта жөнөтүлгөнүн белгилейт. Content-Length - денедеги белгилердин саны. HTTP суроо-талаптары ар кандай аталыштарды камтышы мүмкүн. Көбүрөөк маалыматты протоколдун спецификациясынан тапса болот .
HTTP жооптору
Суроо-талапты алгандан кийин server аны иштеп чыгат жана кардарга жооп жөнөтөт: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>
Жооптун баштапкы сабында протоколдун versionсы (HTTP/1.1), Статус codeу (200), Статус сүрөттөмөсү (OK). Рубрикалар мазмундун түрүн жана узундугун көрсөтөт. Жооптун негизги бөлүгү браузер HTML барагына тарта турган HTML codeун камтыйт.
Жооптун статусунун codeдору
Билдирүүнүн негизги бөлүгү жана аталыштары менен баары түшүнүктүү, бирок статус codeдору жөнүндө бир нече сөздү айтуу керек. Жооптун статусунун codeдору ар дайым үч сандан турат жана codeдун биринчи саны жооптун категориясын көрсөтөт:- 1xx - маалыматтык. Сурам кабыл алынды, server улантууга даяр;
- 2xx - ийгorктүү. Сурам кабыл алынды, түшүнүлдү жана иштетилди;
- 3xx - кайра багыттоо. Сурамды иштеп чыгуу үчүн төмөнкү кадамдарды аткаруу керек;
- 4xx - кардар катасы. Сурам каталарды камтыйт же протоколго туура келбейт;
- 5xx - server катасы. Сервер суроо-талапты иштете алган жок, бирок ал туура түзүлгөн;
- 200 OK — өтүнүч кабыл алынды жана ийгorктүү иштетилди;
- 201 Түзүлгөн — сурам кабыл алынды жана ийгorктүү иштетилди, натыйжада жаңы ресурс же анын инстанциясы түзүлдү;
- 301 Туруктуу жылдырылды - суралган ресурс биротоло жылдырылды жана ага кийинки суроо-талаптар жаңы даректе болушу керек;
- 307 Убактылуу багыттоо - ресурс убактылуу жылдырылды. Азырынча сиз ага автоматтык багыттоо аркылуу кире аласыз;
- 403 Тыюу салынган - суроо-талап түшүнүктүү, бирок авторизация талап кылынат;
- 404 Табылган жок - server бул дарек боюнча ресурсту тапкан жок;
- 501 Ишке ашырылган жок - server бул суроого жооп берүү функциясын колдобойт;
- 505 HTTP versionсы колдоого алынbyte - server HTTP протоколунун көрсөтүлгөн versionсын колдобойт.
GO TO FULL VERSION