Программа:
- принимает 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.
Зачем мы это делаем?
- Научимся работать с сетью на С++.
- Разберемся в http проколе, посмотрим на структуру http запросов и ответов. Это также будет хорошим заделом для курса по телекому на вашем втором курсе.
- Консольные приложения, особенно в качестве MVP, встречаются не редко, и парсинг команд пользователя тоже частая задача. Здесь эти команды в виде http запросов.
- Новый и, очень надеюсь, интересный опыт. Поработаем в команде, как при разработке реальных проектов, разделим задачи и объединим результаты