Skip to content
 
 

Latest commit

 

History

141 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HTTP парсер и анализатор

Программа:

  • принимает http запросы от пользователя из консоли,
  • парсит их, находит метод запроса, заголовок, URI и другие необходимые данные,
  • с помощью полученных данных отправляет http запрос на реальный сервер,
  • ждет ответ,
  • выводит ответ пользователю обратно в консоль. Можно очень грубо сказать, что наша программа выступает промежуточным звеном между клиентом и сервером, только запросы от клиента приходят через консоль.

Что нам понадобится?

  • cpp-httplib. Кроссплатформенная библиотека (так как header-only, то понадобится нам только один заголовочный файл) для работы с http/https. Да, сначала договаривались на boost, но там больше сложных и тонких моментов. Начнем с cpp-httplib, и посмотрим по ходу дела: повторим реализацию с помощью библиотек boost или добавим другие фичи вместе с cpp-httplib, например, обработка https запросов.
  • nlohmann/json. Кроссплатформенная библиотека (а точнее опять заголовочный файл раз так уже пошло). Посмотрим на формат json, в http запросах он может применяться в теле запроса POST и в ответах от сервера. Так сказать, поперекладываем json, но пока без 300к в наносек, к сожалению.
  • curl. Полезный инструмент в связке с http запросами, с его помощью можно, в том числе, отправлять разные запросы на сервер, не переходя на какой-то хост через браузер. Это может пригодиться нам для быстрой отладки клиента. Обычно установлен из коробки и на Linux, и на Windows.

Зачем мы это делаем?

  1. Научимся работать с сетью на С++.
  2. Разберемся в http проколе, посмотрим на структуру http запросов и ответов. Это также будет хорошим заделом для курса по телекому на вашем втором курсе.
  3. Консольные приложения, особенно в качестве MVP, встречаются не редко, и парсинг команд пользователя тоже частая задача. Здесь эти команды в виде http запросов.
  4. Новый и, очень надеюсь, интересный опыт. Поработаем в команде, как при разработке реальных проектов, разделим задачи и объединим результаты

About

Interactive CLI HTTP client in C++ with REPL interface, JSON processing, and unit tests

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages