Shanraq.org Shanraq.org
Интернет қалай жұмыс істейді: HTTP сұранысы, 15 минут
IT

Go тілі: нөлден өз блогыңызға дейін 1-сабақ (барлығы 50)

Интернет қалай жұмыс істейді: HTTP сұранысы, 15 минут

Go курсының бірінші сабағы. Браузер серверден нені сұрайды және не нәрсе жауап саналады: клиент пен сервер, домен, IP және порт, әдіс пен жол, тақырыптар, 200, 404, 500 кодтары. Терминалдағы бір жол нағыз HTTP жауабын оқымай тұрып көрсетеді. Мектеп бағдарламасы мұны бермейді.

Не үшін керек

Бір сабақтан кейін сіз браузерге жауап беретін бағдарлама жазасыз. Оны жазу үшін дәл екі нәрсені білу керек: браузер не сұрайды және не нәрсе жауап саналады.

Мектеп информатикасы мұны бермейді. Онда желілер «жергілікті және жаһандық» деп өтеді, пошта мен сайттарға шамамен үш сағат бөлінген. Бізге басқа нәрсе керек — және көп емес.

Қазір он бес минут — кейін қырық сабақ бойы болжаммен жүрудің орнына.

Бірден тұтас

Ештеңені түсінбей-ақ, терминалды ашыңыз да, бір жол орындаңыз:

curl -i https://shanraq.org

Терминал — бағдарламаға мәтінмен бұйрық беретін терезе. Windows-та ол «Командная строка» немесе PowerShell деп аталады, macOS пен Linux-та — «Терминал». Атауы бойынша іздеуден тауып ашыңыз.

Шамамен мынаны көресіз:

HTTP/2 200
content-type: text/html; charset=utf-8
date: Mon, 01 Sep 2026 09:00:00 GMT

<!doctype html>
<html lang="kk">
...

Болды. Сіз браузердің күніне жүздеген рет істейтін ісін қолмен жасадыңыз.

Жоғарғы жағы — сервердің өзі туралы хабарлағаны. Төменгі жағы, бос жолдан кейін, — беттің өзі. Ортадағы бос жол кездейсоқ емес: дәл сол екеуін бөліп тұр.

Шықпай қалса. curl табылмаса — браузерде кез келген сайтты ашыңыз, F12 басыңыз, «Желі» (Network) қойындысын таңдаңыз, бетті жаңартыңыз да, тізімдегі бірінші жолды шертіңіз. Сол дүние, тек сурет түрінде. Safari-де F12 ештеңе ашпайды: алдымен Баптаулар → Қосымша → «„Әзірлеу" мәзірін көрсету», содан кейін ⌥⌘I. Жауап 301 не 302 кодымен келсе — бұл қайта бағыттау, қалыпты жағдай: пәрменге -L қосыңыз, curl соңынан ереді.

Талдау

Клиент пен сервер

Олар екеу. Біреуі сұрайды, екіншісі жауап береді. Сұрайтынын клиент, жауап беретінін сервер дейді.

Браузер — клиент. Жаңа ғана іске қосқан curl те — клиент. Сервер — біреудің компьютерінде тәулік бойы сұрақ күтіп тұрған бағдарлама. Қырық сабақтан кейін сервер сіздің бағдарламаңыз болады.

Мұндағы ең бастысы: сервер әңгімені бастамайды. Ол күтеді.

Елестетіп көріңіз. Вокзалдағы анықтама терезесі. Ар жағында күні бойы отырып, сұрақ күтеді. Өздері сізге ешқашан келмейді — келу сізге тиесілі.

Мекенжай: домен, IP және порт

Желідегі компьютердің нөмірі бар — IP-мекенжай, 104.21.0.15 тәрізді. Нөмірді ешкім жаттамайды, сондықтан оларға ат ойлап тапқан: shanraq.org. Ат жол-жөнекей нөмірге аударылады, мұнымен жеке қызмет — DNS айналысады.

Елестетіп көріңіз. Телефон кітапшасы. Сіз адамның нөмірін емес, атын есте сақтайсыз; кітапша бірін екіншісіне аударады. DNS — сол кітапша, тек бүкіл интернетке арналған.

Бірақ нөмір жеткіліксіз. Бір компьютерде көп бағдарлама жұмыс істейді, сұрақ солардың қайсысына арналғанын айту керек. Ол үшін порт бар — жай сан. Вебте екі әдеттегісі: HTTP үшін 80, HTTPS үшін 443. Оларды мекенжай жолағына жазбайды, себебі браузер өзі қоя салады.

Былай есте сақтаңыз: IP — үй, порт — пәтер.

Сұраныс: әдіс, жол, тақырыптар

Клиенттің сұрағы үш бөліктен тұрады.

Әдіс (method) — дәл нені істегіңіз келеді. Қазір екеуі керек: GET — «көруге бер», POST — «мә, қабылда». Сілтемеге өту мен мекенжай теру — бұл GET. Форма жіберу — әдетте POST.

Елестетіп көріңіз. Сол бір терезеге екі түрлі өтініш: «кестені көрсетіңіз» және «арызды қабылдаңыз». Терезе біреу, ал әрекет екі түрлі, оларды шатастыруға болмайды.

Жол (path) — нақты нені беру керек. https://shanraq.org/read/salem мекенжайында жол деген /read/salem.

Тақырыптар (headers) — клиент туралы ұсақ мәлімет: жауапты қай тілде қалаймын, браузерім қандай, кукиім бар ма. Кәдімгі «атауы: мәні» түріндегі жолдар.

Елестетіп көріңіз. Конверттің сыртындағы жазулар: кімге, кімнен, қай сыныппен, сынғыш па. Хаттың өзі ішінде, ал сыртындағы жазу бойынша пошта оны қалай тасуды шешеді.

Жауап: код, тақырыптар, дене

Жауап та солай құрылған, тек жоғарысында күй коды тұрады — бәрі қалай өткенін сервер айтатын үш сан.

Одан кейін сервердің тақырыптары. Қазіргі ең маңыздысы — content-type: ол клиентке нақты не жібергенін айтады, бет пе әлде сурет пе. Онсыз браузер мәтінді көрсету керек пе, әлде файлды жүктеу керек пе — білмейді.

Содан соң бос жол. Содан соң дене (body) — бүкіл әңгіме сол үшін басталған нәрсе: беттің HTML-і, сурет, не болса да.

Елестетіп көріңіз. Конверттің ішіндегі хат. Тақырыптар — сырттағы жазу, дене — сіз ашып оқитын нәрсе.

Әзірге жететін үш код

  • 200 — бәрі жақсы, сұрағаныңыз мінеки.
  • 404 — менде ондай жол жоқ. Көбіне мекенжай қате, бірақ біздің кінәміз де болады: сайттағы сынған сілтеме де сол жерге апарады.
  • 500 — мен сынып қалдым. Ал мынау серверді жазған адамның кінәсі, оны байқауды қателер мен журнал туралы сабақта үйренеміз.

Код жүзден асады, бірақ осы үшеуі алғашқы айда кездесетіннің бәрін дерлік жабады.

Елестетіп көріңіз. Берілген арызға басылатын мөр. «Қабылданды» — 200. «Бізде ондай іс жоқ» — 404. «Бізде өрт, кейінірек келіңіз» — 500. Мөр әрқашан басылады, тіпті бас тартқанда да.

HTTP пен HTTPS

HTTP — бағдарлама да, файл да емес. Бұл — келісім: бір-бірін танымайтын екі бағдарлама түсінісуі үшін әдісті, жолды, тақырыптар мен денені қандай ретпен жазу керектігі туралы уағдаластық. Мұндай келісімдерді хаттама (протокол) дейді.

Елестетіп көріңіз. Бланк толтыру ережесі. Тіл де, қағаз да емес, уағдаластық: алдымен тегі, сосын күні, астында қолы. Басқаша толтырсаңыз қабылдамайды, сөздердің бәрі түсінікті болса да.

HTTPS — дәл сол келісім, тек жол бойы бәрі шифрланған. Браузердегі құлып сондықтан тұр. Сіздің кодыңыз үшін айырмашылық жоқтың қасы: жазатыныңыз HTTP, ал шифрлау сырттан, домен мен HTTPS туралы сабақта қосылады.

Сабақ картасы

Сабақ картасы: клиент, сұраныс, сервер, жауап

Өз сөзіңізбен айтыңыз

Қарамай, дауыстап немесе қағазға жазып жауап беріңіз. Жауаптары — сабақтың соңында.

  1. Сервер неге сіздің браузеріңізге бірінші болып жаза алмайды?
  2. Сервер дұрыс бетті жіберіп, бірақ content-type: image/png тақырыбымен жіберсе не болады?
  3. 404 пен 500-дің айырмашылығы неде — тұжырымы емес, кім кінәлі деген жағынан?

Тапсырма

Міндетті. Кез келген екі сайтқа curl -i орындаңыз. Әрқайсысы үшін күй коды мен content-type мәнін жазып алыңыз. Болды.

Қалауыңызша.

  • 404 қайтаратын мекенжай табыңыз. Ең оңайы — таныс сайтқа кез келген бірдеңе тіркеп жіберу.
  • Қайта бағыттауды табыңыз — коды 3-тен басталатын, тақырыбында location тұрған жауап: сервер «мен көштім, анадан сұра» деп тұр. Кеңес: curl -i http://shanraq.org, s әрпінсіз. Қай код келетіні — 301, 302, 307 әлде 308 — серверге байланысты; олар көшудің тұрақтылығымен және әдістің сақталуымен ерекшеленеді.

Блогта қайда тұрады

Сіздің блогыңыз — сервер. Оқырман ашатын әрбір бет — осындай бір алмасу: ол GET пен жолды жіберді, сіз 200 мен HTML қайтардыңыз.

Әрі қарай жұмыс орнын жинайсыз, содан соң коды 200 және «Сәлем» сөзімен жауап беретін сервер жазасыз. HTTP-ні байыппен қарайтын сабақта осында қайта оралып, тақырыптарды толық талдаймыз.

Ақша туралы бірден айтайық, соңында тосын жағдай болмасын. Курстың бәрі — тіл де, дерекқор да, дайын блог та — сіздің машинаңызда тегін жұмыс істейді. Блогты басқалар ашсын десеңіз, сайтты орналастыру да тегін болуы мүмкін. Ақша тек өз домен атыңызға керек: бүкіл курстағы жалғыз ақылы қадам осы.

Жауаптар

Жауаптарды көрсету
  1. Себебі сервер тек күтеді. Сіз бірінші сұрағанша ол сіздің компьютеріңіздің мекенжайын да, жалпы бар екеніңізді де білмейді. Әңгімені әрқашан клиент бастайды.
  2. Браузер мазмұнға емес, тақырыпқа сенеді: бетті сурет ретінде көрсетуге тырысады да, не қате, не қоқыс шығарады. content-type — қолтаңба емес, нұсқау.
  3. 404 болғанда оқырман мекенжайдан жаңылған, сервер дұрыс істеген. 500 болғанда дұрыс мекенжайда сервердің өзі сынған, кінәлі — оны жазған адам. Біріншісін түзетудің қажеті жоқ, екіншісін түзету керек.

Дереккөздер

Мәтінде қате не теру қатесі кездессе, бізге айтыңыз

Тапсырманы тексеру

Алдымен VS Code-та шешіп, іске қосыңыз — редактор қатені сол жерде көрсетеді. Дайын шешімді осында қойыңыз. Тексеретін — модель: ол қатені атап көрсетеді, бірақ дайын жауапты бермейді.

Тексеру үшін кіру керек. Кіру

Пікірлер (0)

Әзірге пікір жоқ. Бірінші болыңыз.