Skip to content

Latest commit

 

History

History
 
 

04-http

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

HTTP, Flask

Скринкаст первой части лекции

Скринкаст второй части лекции

Что нужно установить

С прошлого раза у вас должен быть установлен pip. С его помощью поставьте flask:

sudo pip3 install flask

План лекции

  1. TCP/IP. nc/nc -l: демонстрация пары сокетов. ifconfig, ping
  2. Протокол HTTP. Запрос к Гуглу через nc
  3. Вкладка Networks в Инструментах разработчика
  4. Прикидываемся веб-сервером: ответ браузеру через nc -l
  5. Что происходит при загрузке страницы
  6. Реализация HTTP-протокола своими руками: веб-фреймворк на голых сокетах
  7. python3 -m http.server
  8. Фреймворк Flask: routing, шаблоны. "Блог".

Задание

Напишите сервис "Сокращатель ссылок". Примеры таких сервисов: http://gg.gg/, http://goo.gl/.

Главный функционал:

  • Пользователь вставляет ссылку, нажимает "Shorten". Его перенаправляю на страницу, где написано, какая короткая ссылка ему выделена.
  • Сервер запоминает во внутренних структурах короткую ссылку. Когда к серверу обращаются по короткой ссылке, сервер отправляет редирект на сохраненный длинный урл.

Дополнения:

  • Пользователь может придумать своё короткое имя для ссылки.
  • Подумайте, зачем людям такой сервис, как они будут его использовать? Нужно ли дать им возможность быстрого копирования созданной ссылки: в один клик, в одно нажатие клавиш?
  • Покажите на главной странице все ссылки, добавленные на сайт. Или только последние 10.

Решение задания выложите на гитхаб, добавьте ссылку на вики-страничку.

Если сможете задеплоить в интернет самостоятельно, будет круто. Гуглить инструкции можно по словам "flask deploy". Истории успеха напишите на вики-страничке с решениями.

Материалы

  1. Туториалы и документация к Фласку.
  2. Маленькая статья про HTTP
  3. RFC 2068 про HTTP 1.1: оригинал на английском, русский перевод
  4. Wappalyzer - расширение для Хрома, которое показывает веб-технологии, задействованные на текущей страничке