Ang materyal na ito ay bahagi ng seryeng "Introduction to Enterprise Development". Mga nakaraang artikulo:
Kamusta! Ngayon ay mauunawaan natin ang mga protocol ng HTTP at HTTPS. Ngunit una, linawin natin ang isang punto: pinag-uusapan natin ang tungkol sa mga protocol ng paglilipat ng data sa network sa layer ng aplikasyon ng modelo ng OSI. Tulad ng naaalala mo, tinalakay namin ang modelo ng OSI sa isa sa mga nakaraang artikulo. At kung hindi mo maalala, narito ito .
Kaagad na dapat tandaan na ang HTTP protocol ay binubuo lamang ng teksto. Well, kami ay pinaka-interesado sa istraktura kung saan matatagpuan ang tekstong ito. Ang bawat mensahe ay binubuo ng tatlong bahagi:
Ano ang data transfer protocol
Ito ang pangalang ibinigay sa pangkalahatang tinatanggap na kasunduan, salamat sa kung saan ang mga developer ng iba't ibang serbisyo ay nagpapadala ng impormasyon sa isang solong form. Halimbawa, gamit ang Google Chrome, maaari kang makakuha ng impormasyon mula sa Facebook at Twitter, dahil ipinapadala ito ng mga developer gamit ang karaniwang HTTP protocol, at maaaring iproseso ito ng iyong browser. Ang mga pare-parehong panuntunan ay napaka-maginhawa para sa mga developer mismo ng server-side: maraming mga library na maaaring mag-convert ng impormasyon para sa iyo at ipadala ito gamit ang kinakailangang protocol. Ang HTTP ay orihinal na naisip bilang isang protocol para sa paglilipat ng mga pahina ng HTML. Ito ang kaso sa loob ng mahabang panahon, ngunit ngayon ay madalas na inililipat ng mga programmer ang parehong mga string at media file sa ibabaw nito. Sa pangkalahatan, ang protocol na ito ay maraming nalalaman at nababaluktot, at ito ay talagang madaling gamitin. Ngayon alamin natin kung paano ito gagawin.
istraktura ng HTTP
Kaagad na dapat tandaan na ang HTTP protocol ay binubuo lamang ng teksto. Well, kami ay pinaka-interesado sa istraktura kung saan matatagpuan ang tekstong ito. Ang bawat mensahe ay binubuo ng tatlong bahagi:
- Panimulang linya—tumutukoy sa data ng serbisyo.
- Mga header - paglalarawan ng mga parameter ng mensahe.
- Katawan ng mensahe (Katawan) - data ng mensahe. Dapat na ihiwalay sa mga heading ng isang blangkong linya.
Ano ang hitsura ng isang simpleng kahilingan sa 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)
Ang panimulang linya ay naglalaman ng:
- GET - paraan ng kahilingan;
- / — humiling ng landas (path);
- HTTP/1.1 - bersyon ng data transfer protocol.
- Host — ang host kung saan tinutugunan ang kahilingan;
- Ang User-Agent ay ang kliyenteng nagpapadala ng kahilingan.
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com
{
"Id": 12345,
"User": "John"
}
Ang kahilingan ay ipinadala sa javarush.com/user/create/json, ang bersyon ng protocol ay HTTP/1.1. Tinutukoy ng Accept kung anong format ng tugon ang inaasahan na matatanggap ng kliyente, ang Uri ng Nilalaman ay tumutukoy kung anong format ang ipinadala sa katawan ng mensahe. Content-Length - ang bilang ng mga character sa katawan. Ang isang kahilingan sa HTTP ay maaaring maglaman ng maraming iba't ibang mga header. Higit pang mga detalye ay matatagpuan sa detalye ng protocol .
Mga tugon sa HTTP
Pagkatapos matanggap ang kahilingan, pinoproseso ito ng server at nagpapadala ng tugon sa kliyente: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>
Ang panimulang linya sa tugon ay naglalaman ng bersyon ng protocol (HTTP/1.1), Status Code (200), Status Description (OK). Ang mga heading ay nagpapahiwatig ng uri at haba ng nilalaman. Ang katawan ng tugon ay naglalaman ng HTML code na dadalhin ng browser sa HTML page.
Mga Code ng Status ng Tugon
Malinaw ang lahat sa katawan ng mensahe at mga header, ngunit sulit na magsabi ng ilang salita tungkol sa mga status code. Ang Mga Code ng Status ng Tugon ay palaging tatlong digit, at ang unang digit ng code ay nagpapahiwatig ng kategorya ng tugon:- 1xx - impormasyon. Ang kahilingan ay natanggap, ang server ay handa nang magpatuloy;
- 2xx - matagumpay. Ang kahilingan ay natanggap, naunawaan at naproseso;
- 3xx - pag-redirect. Ang mga sumusunod na hakbang ay dapat gawin upang maproseso ang kahilingan;
- 4xx - error sa kliyente. Ang kahilingan ay naglalaman ng mga error o hindi sumusunod sa protocol;
- 5xx - error sa server. Hindi nagawang iproseso ng server ang kahilingan, bagama't ito ay nabuo nang tama;
- 200 OK — ang kahilingan ay natanggap at matagumpay na naproseso;
- 201 Nilikha — ang kahilingan ay natanggap at matagumpay na naproseso, na nagreresulta sa paglikha ng isang bagong mapagkukunan o halimbawa nito;
- 301 Permanenteng Inilipat - ang hiniling na mapagkukunan ay inilipat nang permanente, at ang mga kasunod na kahilingan dito ay dapat mangyari sa bagong address;
- 307 Temporary Redirect - pansamantalang inilipat ang mapagkukunan. Sa ngayon, maa-access mo ito gamit ang awtomatikong pag-redirect;
- 403 Ipinagbabawal - malinaw ang kahilingan, ngunit kailangan ang awtorisasyon;
- 404 Not Found - hindi nahanap ng server ang mapagkukunan sa address na ito;
- 501 Not Implemented - hindi sinusuportahan ng server ang functionality na tumugon sa kahilingang ito;
- 505 HTTP Version Not Supported - hindi sinusuportahan ng server ang tinukoy na bersyon ng HTTP protocol.
GO TO FULL VERSION