Ин мавод як қисми силсилаи «Муқаддима ба рушди корхона» мебошад. Мақолаҳои қаблӣ:
Салом! Имрӯз мо протоколҳои HTTP ва HTTPS-ро мефаҳмем. Аммо аввал, биёед як нуктаро равшан кунем: сухан дар бораи протоколҳои интиқоли додаҳо тавассути шабака дар қабати татбиқи модели OSI меравад. Тавре ки шумо дар хотир доред, мо дар яке аз мақолаҳои қаблӣ модели OSI-ро баррасӣ карда будем. Ва агар шумо дар хотир надоред, ин ҷост .
Дарҳол бояд қайд кард, ки протоколи HTTP танҳо аз матн иборат аст. Хуб, мо бештар ба сохторе таваҷҷӯҳ дорем, ки ин матн дар он ҷойгир аст. Ҳар як паём аз се қисм иборат аст:
Протоколи интиқоли маълумот чист
Ин номест, ки созишномаи аз ҷониби умум қабулшуда дода шудааст, ки ба шарофати он таҳиягарони хидматҳои гуногун маълумотро дар як шакли ягона мефиристанд. Масалан, бо истифода аз Google Chrome, шумо метавонед ҳам аз Facebook ва ҳам аз Twitter маълумот гиред, зеро таҳиягарон онро бо истифода аз протоколи стандартии HTTP интиқол медиҳанд ва браузери шумо метавонад онро коркард кунад. Қоидаҳои ягона барои худи таҳиягарони тарафи server низ хеле қулайанд: китобхонаҳои зиёде мавҷуданд, ки метавонанд маълумотро барои шумо табдил диҳанд ва бо истифода аз протоколи зарурӣ фиристанд. 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 - versionи протоколи интиқоли маълумот.
- Хост — мизбоне, ки дархост ба он равона шудааст;
- 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 фиристода мешавад, 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), Рамзи Статус (200), Тавсифи Ҳолат (Хуб). Сарлавҳаҳо намуд ва дарозии мундариҷаро нишон медиҳанд. Дар қисми ҷавоб рамзи HTML мавҷуд аст, ки браузер ба саҳифаи HTML ҷалб мекунад.
Рамзҳои ҳолати вокуниш
Бо матни паём ва сарлавҳаҳо ҳама чиз равшан аст, аммо дар бораи рамзҳои статус чанд сухан гуфтан меарзад. Рамзҳои ҳолати посух ҳамеша се рақам мебошанд ва рақами якуми code категорияи ҷавобро нишон медиҳад:- 1xx - иттилоотӣ. Дархост қабул шуд, server барои идома омода аст;
- 2xx - муваффақ. Дархост қабул, фаҳмида ва коркард шудааст;
- 3xx - масир. Барои коркарди дархост қадамҳои зерин бояд иҷро шаванд;
- 4xx - хатои муштарӣ. Дархост хатогиҳо дорад ё ба протокол мувофиқат намекунад;
- 5xx - хатои server. Сервер натавонист дархостро коркард кунад, гарчанде ки он дуруст тартиб дода шуда буд;
- 200 OK — дархост қабул ва бомуваффақият коркард карда шуд;
- 201 Эҷод шуд — дархост қабул ва бомуваффақият коркард карда шуд, ки дар натиҷа манбаи нав ё мисоли он эҷод шуд;
- 301 Ба таври доимӣ кӯчонида шуд - манбаи дархостшуда ба таври доимӣ интиқол дода шудааст ва дархостҳои минбаъда ба он бояд дар суроғаи нав сурат гиранд;
- 307 Бозгашти муваққатӣ - манбаъ муваққатан кӯчонида шудааст. Ҳоло шумо метавонед ба он бо истифода аз масири худкор дастрасӣ пайдо кунед;
- 403 Манъ - дархост равшан аст, аммо иҷозат лозим аст;
- 404 Наёфт - server захираро дар ин суроға наёфт;
- 501 Иҷро нашудааст - server функсияи ҷавоб додан ба ин дархостро дастгирӣ намекунад;
- 505 Версияи HTTP дастгирӣ намешавад - server versionи муқарраршудаи протоколи HTTP-ро дастгирӣ намекунад.
GO TO FULL VERSION