ron_1
Я новичок в бэкенде, я как старик который попал в далёкое будущее - я не понимаю алгоритм работы всей этой машины.
Ты не знаешь основ WWW. Надо изучить протокол HTTP.
Вкратце
Есть две программы: программа-сервер, которая ставится на один компьютер; программа-клиент, которая ставится на второй компьютер.
Компьютер с установленной программой-сервером называется сервером.
Компьютер с установленной программой-клиентом называется клиентом.
Программа-сервер устроена так: она реализует какой-то протокол и открывает порт на компьютере, чтобы в этот порт можно было по сети подключиться.
Программа-клиент устроена так: она реализует какой-то протокол и подключается по сети к порту на компьютере.
Когда клиент подключается к серверу, программа-клиент подключается к программе-серверу и между ними начинается обмен данными по протоколу. Они здороваются (правило протокола), сообщают друг другу свои версии (правило протокола), набор своих возможностей и потом передают данные, соблюдая определённый синтаксис (правило протокола). Благодаря протоколу они друг друга понимают и знают, как общаться и что вообще можно делать.
Есть разные протоколы: HTTP, FTP, SSH, TELNET, SMTP, POP3, IMAP, GOPHER и многие другие. Соответственно, для каждого протокола есть своя пара программ, реализующих протокол, - программа-сервер и программа-клиент.
Рассмотрим протокол HTTP. В этом протоколе программа-клиент посылает текстовый запрос, который включает в себя команду и её параметры.
GET /index.html HTTP/1.0
тут идёт обязательная пустая строка (это определёно в протоколе)
Команда GET запрашивает у сервера файл index.html по адресу / . При этом версия протокола HTTP используется 1.0, что говорит о старом наборе возможностей, которые сервер должен использовать. Версия 1.1 добавляет возможности в протокол и на сервере эта версия есть, но клиент говорит, что не поймёт эти возможности, поэтому сервер должен повиноваться и отвечать только в версии 1.0 . Это всё тоже заложено в протоколе, протокол - это набор всех поведенческих правил.
Вот когда программа-клиент отправила запрос такой, программа-сервер просто получила этот текст, а дальше по этому тексту она решает, что надо сделать и что надо ответить клиенту. Что может делать программа-сервер на компьютере? Да что угодно, всё что хочет. Но ответить она должна по протоколу. Она может просто не брать никакой файл, а просто ответить
HTTP/1.0 200 OK
Content-Type: text/plain
пустая строка (по протоколу)
hello world
Тогда программа-клиент видит, что это ответ по протоколу, что версия протокола соблюдается, что ответ без ошибок и что вообще запрашиваемая команда выполнена. Программа-клиент знает, что после пустой строки можно брать данные спокойно.
При этом всём программа-сервер может, конечно, и пойти какой-то файл поискать, залезть в него и его содержимое точно так же отправить в виде текста в сетевое соединение по этому порту; программа-клиент не знает, что там происходит. Есть запрос - есть ответ.
Вот и всё.
ron_1
Как вы изучили свой первый фреймворк? Как начали работать в back-end?
Прочитал информацию о протоколе. Есть спецификации всех протоколов
HTTP 1.0
https://tools.ietf.org/html/rfc1945HTTP 1.1
https://tools.ietf.org/html/rfc2616FTP
https://tools.ietf.org/html/rfc959SMTP
https://tools.ietf.org/html/rfc5321ron_1
P.S Django это огромнейшая непонятная паутина где всё взаимосвязано
Что бы там ни было наворочено, всё равно это всё сводится к простому обмену текстом по протоколу. Любое веб-приложение (чат там или электронная почта) это просто обмен текстом по протоколу. Веб-приложение - это такой интерфейс для формирования запросов. Ты набираешь текст к окошке, нажимаешь на кнопку, а браузер просто при нажатии на кнопку составляет запрос по HTTP-протоколу и текст из окошка вставляет в этот запрос.
ron_1
что за слэш внутри первого декоратора? Кто обрабатывает возвращаемое значение функции index и т.д
Ты когда в браузере набираешь
http://www.site.com , браузер подключается к этому сайту по адресу
www.site.com и порту 80 и посылает туда запрос
GET / HTTP/1.0
пустая строка
Вот этот слеш и есть адрес ресурса на сервере.
И вот эта платформа (Django или Flask или Bottle или ещё что) знает, что при запросе от клиента ресурса по адресу / надо просто вернуть такой-то текст.
tags: http