8-блог: HTTPди билиў шәртпе? / HTTPdi biliw sha'rtpe?
HTTP неге интернет ушын керек, HTTP сораўы менен жуўабы қандай бөлимлерден турады ҳәм GET, POST, PUT, DELETE методлары не ислейди?
HTTP бул HTML емес. HTML ҳаққында үйренбекши болсаңыз төмендеги блогты көрип шығың.
Вебсайт/ мобил бағдарлама (mobile app) жарататуғын программист HTTPди билиўи зәрүр. Интернетте көплеген вебсайттың мәнзили биринши HTTP деген сөзден басланады. Неге ондай?
HTTP неге интернет ушын керек?
HTTP ҳаққында аңсат етип түсиндирип, жоқарыдағы сораўға жуўап бериўге ҳәрекет етемен.
Адамлар бир-бирин түсиниўи ушын еки тәреп түсинетуғын тилде сөйлесиўи керек. Маған японша гәп айтсаңыз түсинбеймен. Тек "нани?" (қарақалпақшасына “не?”) деп жуўап қайтара аламан.
Компьютерлер де бир-бирин түсиниўи ушын бир тилде сөйлесиўи керек. Усы тилди HTTP деп те атайды.
HTTP бул - толық айтқанда - Hyper Text Transfer Protocol. Тиккелей аўдармаласақ, Гипер текст жеткерип бериў протоколы болады. Протокол дегенимиз белгили бир қағыйдалар топламы.
Ол компьютерлер ортасындағы сыйқырлы, супер күш ЕМЕС.
HTTP бул компьютерлер ортасындағы байланысты стандартластырып беретуғын абстракт көринистеги қағыйдалар топламы.
HTTP бул сизиң веб-браузериңиз серверде/басқа компьютерде сақланатүғын веб-страницаларды сорап алыў ушын ислететуғын усыл. Соның ушын дерлик ҳәр бир вебсайт HTTP деген сөзден басланады.
Бир әпиўайы мысал менен түсиндирсек.
"Қурма" деген компьютер "Қаўын" деп аталатуғын компьютерге қарап "Маған мына файлды таслап жиберши-ай" деўи мүмкин. "Ерик" деген компьютер де "Қаўын"ға қарап "Ана файлды көрсет" деўи мүмкин. "Жүзим" деген компьютер "Маған ABC деген документти бер" дейди. "Қәрели" де "Маған да бер" дейди.

"Мийўе-шийўе аты менен бас аўырып кетти-ғо" деўиңиз мүмкин.
Негизи сол мақсет пенен жазған едим жоқарыдағы параграфты. Себеби, интернеттен күнине миллярдлаған адам пайдаланады. Бир ғана TikTok деген мобил эптан айына орташа есапта 1.5 (бир ярым) милярдқа жақын адам пайдаланады. Бир күнде 34 миллион рилс-видео басылып (posting) шығады. Демек, сервер компьютерлер бир-бири менен тынымсыз "сөйлесип" атыр. Егер, компьютерлер өз билгенинше хабар жиберип, хабар алыўға ҳәрекет етсе ҳәммениң "басы аўрыйтуғын" еди.

"Қаўын" деген компьютерде бар файл/инфо бәршемизге керек. Бирақ ол да "сорап келди" екен деп берип жибере алмайды.
Бизлер де рәсмий мекемеге жумыс пенен барсақ, биринши нәўбетке турып, арнаўлы формаға арза жазып, керекли документлерди арза менен қосып тапсырамыз. Өзиниң тәртип қағыйдасы бар.
Тап сондай, "Қаўын" деген компьютерден бир нәрсе сорап алыў ушын тәртип қағыйдаға бойсынып сораймыз. Ондай қылмасақ, компьютер сораўымызды қабыл етпейди.
Мине уси сораўымызды HTTP тәрепинен белгилеп қойылған форматқа салып дурыслап жазамыз.
Соның ушын да буны HTTP сораў деп атаймыз.
HTTP сораў төмендеги бөлимлерден ибәрат болады:
1. Сораў түри бөлими (Request line):
Сораў түри бөлимине өз нәўбетинде метод түри, URL адрес ҳәм HTTP версиясы киреди.
Request line:
HTTP method
URL
HTTP version"Метод деген не енди?" деп сораўыңыз мүмкин.
Бағана "Қаўын"нан "ана файлды көрсет, мына файлды тасла, басқа файлды бер" деп сораўдың орнына енди ТЕК ҒАНА бир түрде "Мен сораған файлды алып кел" деп айтыўға ҳаққымыз бар.
Усы "алып кел" деген ҳәрекет "GET" метод деп аталады. get - бул "to get" инглизше сөз.
"GET" сияқлы бир неше HTTP методлар бар. "POST", "DELETE", "PUT"...
Инстаграмда да сторис көремиз, яки өзлеримиз сторис жаратамыз. Сторис көргенимизде "GET" метод пенен HTTP сораў жаратып, сторисларды көремиз. Сторис қойғанымызда "POST" метод пенен HTTP сораў жаратып, стористи Инстаграмның дата базасына "сохранить" етемиз.
Инстаграмнан ески фотоны өширген ўақтымызда "DELETE" метод пенен HTTP сораў жаратып, дата базадан "удалить" етемиз.
GET: Файлды сораў методы
POST: Серверге мағлыўмат жибериў/ сақлаў методы
PUT: Файлды жаңартыў (update) методы
DELETE: Файлды өшириў методыПрограммист/девелопер усы HTTP методлардан пайдаланып бағдарлама жаратады.
URL адрес не екенин билсеңиз керек. URL бул вебсайт адреси. Усы оқып атырған блогтың URL адреси dembermes.substack.cом/p/8-http-httpdi-biliw-shartpe
HTTP версиясы бул протоколдың қайсы версиясынан пайдаланып атырғанымыз ҳаққында мағлыўмат.
Ҳәзирги версия HTTP 2.0.
Ең биринши HTTP яғный 0.9 версиясы 1991-жылда шыққан.
Бул версияда тек бир метод "GET" болған. Тек HTML түрдеги жуўапты қабыллай алған. 1996-жилда HTTP 1.0 версияси жаратылды. Алдыңғы версияға қарағанда әдеўир кеңейтирилген версия сыпатында, енди фото, видео, апиўайы текст сияқлы жуўапларды да қабыллай алатуғын болды. Таза метод түрлери қосылды. HTTP тақырып (HTTP header) ҳәм тағы басқа да қәсийетлер қосылды.
Кейин ала, HTTP 1.2 версияси жаратылды. Ол алдыңғы версияларды және де толықластырды.
2. Тақырып (Header) бөлими:
HTTP тақырып (HTTP header) бөлимине HTTP сораўына тийисли басқа қосымша инфо/ метадата (metadata) қосылады.
Host: Сервердиң домен атамасы
User-Agent: Пайдаланыўшының браузери ҳаққында (егер басқа программа арқалы сораў таслаған болса сол ҳаққында) мағлыўмат
Accept: Пайдаланыўшының программасы қандай контент түрин қабыл ете алатуғыны ҳаққында мағлыўмат
Content-Type: Пайдаланыўшының программасы жиберип атырған контент түри
Cookie: Куки (русшасына печенье) бул браузер тәрепинен ўақтынша сақлап қойылатуғын анаў-мынаў инфо, ҳәм уси куки HTTP сораўлар менен биргеликте жибериледи/қабыллап алынады3. Бас (HTTP Body) бөлими:
Бас бөлими деп аталғаны менен егер зәрүр болмаса ҳәр бир HTTP сораў менен жибериў шәрт емес.
Көбинесе POST, PUT яки DELETE методлар менен бирге жибериледи.
"HTTP дым қыйын екен-ай" деп ойлаўыңыз мүмкин. Бирақ ондай емес. HTTP бул веб дәстүр жаратыў ушин ең биринши қәдем. Бирақ ҳәзир ҳәммесин билип кетиўиңиз шәрт емес. Ҳәзирше, жалпы түсиникке ийе болсаңыз болады.
Мәселен, төменде HTTP GET метод пенен жазылған сораўды мысал сыпатында келтирип өттим.
GET /blogs/jetinshiblog HTTP/1.1
Host: www.dembermes.substack.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
Connection: keep-aliveHTTP сораўды қабыллап алған сервер енди HTTP жуўап қайтарады. HTTP жуўап тек бир еки қәсийети мене HTTP сораўдан парық қылады.
Жоқарыда айтып өткен HTTP сораўдың "Сораў түри бөлими" орнына "Жуўап түри бөлими" берилген болады. Ол төмендегилерден ибарат.
1. Жуўап түри бөлими (Status line):
HTTP Version: HTTP версиясы
Status Code: HTTP сораўға сервер қалай жуўап бергени ҳаққында нәтийже/результат коды (мысалы: 200 OK, 404 Not Found).
Reason Phrase: Нәтийже коды ҳаққында түсиндирме
HTTP 1.2 200 OK
Date: Sat, 26 Jun 2021 10:00:00 GMT
Server: Apache/2.4.41 (Ubuntu)
Last-Modified: Sat, 26 Jun 2021 09:00:00 GMT
Content-Type: text/html
Content-Length: 4570
<!DOCTYPE html>
<html>
<head>
<title>7-блог</title>
</head>
<body>
<h1>Сәлем, жетинши блог пенен танысың.</h1>
<p>Мысал ушын жазылған HTTP жуўап түри.</p>
</body>
</html>HTTP жуўаптың қалған бөлимлери HTTP сораў менен бирдей.
Негизинде, дәстүрши сыпатында HTTP сораў/жуўапты бул тәризде толық етип жазып отырыўыңыз шәрт емес. Гези келгенде, қайтып жазыўды бирге эп жаратқанымызда түсиндиремен.
Ҳәзирше HTTP деген қандай протокол екени ҳаққында басланғыш түсиникке ийе болғаныңыз жеткиликли.
Бүгин HTTP қандай протокол екени ҳаққында аңсат тилде түсиндириўге ҳәрекет еттим.
Егер сораў/усынысларыңыз болса, комментте жазып қалдырсаңыз болады. Оқып шыққаныңыз ушын раҳмет!