Bu material “Müəssisələrin İnkişafına Giriş” seriyasının bir hissəsidir. Əvvəlki məqalələr:
Salam! Bu gün biz HTTP və HTTPS protokollarını başa düşəcəyik. Ancaq əvvəlcə bir məqama aydınlıq gətirək: söhbət OSI modelinin tətbiq səviyyəsində şəbəkə üzərindən məlumat ötürmə protokollarından gedir. Yadınızdadırsa, əvvəlki məqalələrdən birində OSI modelini müzakirə etmişdik. Və xatırlamırsınızsa, budur .
Dərhal qeyd etmək lazımdır ki, HTTP protokolu yalnız mətndən ibarətdir. Yaxşı, bizi ən çox bu mətnin yerləşdiyi struktur maraqlandırır. Hər bir mesaj üç hissədən ibarətdir:
Məlumat ötürmə protokolu nədir
Bu, ümumi qəbul edilmiş razılaşmaya verilən addır, bunun sayəsində müxtəlif xidmətlərin tərtibatçıları məlumatı vahid formada göndərirlər. Məsələn, Google Chrome-dan istifadə edərək həm Facebook, həm də Twitter-dən məlumat əldə edə bilərsiniz, çünki tərtibatçılar onu standart HTTP protokolundan istifadə edərək ötürür və brauzeriniz onu emal edə bilər. Vahid qaydalar server tərəfi tərtibatçıların özləri üçün də çox əlverişlidir: sizin üçün məlumatı çevirə və tələb olunan protokoldan istifadə edərək göndərə bilən bir çox kitabxana var. HTTP əvvəlcə HTML səhifələrini köçürmək üçün bir protokol kimi düşünülmüşdür. Bu, uzun müddət idi, lakin indi proqramçılar tez-tez həm simləri, həm də media fayllarını onun üzərindən ötürürlər. Ümumiyyətlə, bu protokol çox yönlü və çevikdir və istifadəsi həqiqətən asandır. İndi bunu necə edəcəyimizi anlayaq.
HTTP strukturu
Dərhal qeyd etmək lazımdır ki, HTTP protokolu yalnız mətndən ibarətdir. Yaxşı, bizi ən çox bu mətnin yerləşdiyi struktur maraqlandırır. Hər bir mesaj üç hissədən ibarətdir:
- Başlanğıc xətti—xidmət məlumatlarını müəyyən edir.
- Başlıqlar - mesaj parametrlərinin təsviri.
- Mesaj gövdəsi (Gövdə) - mesaj məlumatları. Başlıqlardan boş sətirlə ayrılmalıdır.
Sadə bir HTTP sorğusu necə görünür
GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Başlanğıc xəttində aşağıdakılar var:
- GET - sorğu metodu;
- / — sorğu yolu (yol);
- HTTP/1.1 - məlumat ötürmə protokolunun versiyası.
- Host — sorğunun ünvanlandığı host;
- İstifadəçi-Agent sorğu göndərən müştəridir.
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com
{
"Id": 12345,
"User": "John"
}
Sorğu javarush.com/user/create/json ünvanına göndərilir, protokol versiyası HTTP/1.1-dir. Accept müştərinin hansı cavab formatını alacağını, Məzmun növü mesajın hansı formatda göndərildiyini müəyyən edir. Content-Length - bədəndəki simvolların sayı. HTTP sorğusu çoxlu müxtəlif başlıqlardan ibarət ola bilər. Daha ətraflı məlumatı protokol spesifikasiyasında tapa bilərsiniz .
HTTP cavabları
Sorğunu aldıqdan sonra server onu emal edir və müştəriyə cavab göndərir: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>
Cavabın başlanğıc sətirində protokol versiyası (HTTP/1.1), Vəziyyət kodu (200), Vəziyyətin təsviri (OK) var. Başlıqlar məzmunun növünü və uzunluğunu göstərir. Cavabın mətni brauzerin HTML səhifəsinə çəkəcəyi HTML kodunu ehtiva edir.
Cavab Vəziyyəti Kodları
Mesajın gövdəsi və başlıqları ilə hər şey aydındır, lakin status kodları haqqında bir neçə söz deməyə dəyər. Cavab Vəziyyəti Kodları həmişə üç rəqəmdən ibarətdir və kodun ilk rəqəmi cavabın kateqoriyasını göstərir:- 1xx - məlumat. Sorğu qəbul edildi, server davam etməyə hazırdır;
- 2xx - uğurlu. Sorğu qəbul edilib, başa düşülüb və işlənib;
- 3xx - yönləndirmə. Sorğunu emal etmək üçün aşağıdakı addımlar yerinə yetirilməlidir;
- 4xx - müştəri xətası. Sorğuda səhvlər var və ya protokola uyğun gəlmir;
- 5xx - server xətası. Düzgün tərtib olunsa da, server sorğunu emal edə bilmədi;
- 200 OK — sorğu alındı və uğurla emal olundu;
- 201 Yaradıldı — sorğu qəbul edildi və uğurla emal olundu, nəticədə yeni resurs və ya onun nümunəsi yaradıldı;
- 301 Daimi köçürüldü - tələb olunan resurs daimi olaraq köçürüldü və ona növbəti sorğular yeni ünvanda baş verməlidir;
- 307 Temporary Redirect - resurs müvəqqəti olaraq köçürülüb. Hələlik siz avtomatik yönləndirmədən istifadə edərək ona daxil ola bilərsiniz;
- 403 Qadağan - sorğu aydındır, lakin icazə tələb olunur;
- 404 Tapılmadı - server bu ünvanda resurs tapmadı;
- 501 Həyata keçirilmir - server bu sorğuya cavab vermək üçün funksionallığı dəstəkləmir;
- 505 HTTP Version Dəstəklənmir - server HTTP protokolunun müəyyən edilmiş versiyasını dəstəkləmir.
GO TO FULL VERSION