Задать вопрос
Alf162
@Alf162

Как создать REST API на C++?

Здравствуйте.
Необходимо создать http сервер, который будет принимать на вход JSON. Подскажите, какой инструмент в с++ лучше использовать для этих целей?
  • Вопрос задан
  • 5180 просмотров
Подписаться 2 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 5
@sitev_ru
sitev.ru - мой блог ...
Могу посоветовать наше решение, даже сайт работает на нашем веб-сервере sitev.ru
Исходники тут: github.com/sitev

Проконсультируем по скайпу или icq - пишите...
Ответ написан
Nipheris
@Nipheris Куратор тега C++
Поддержка HTTP (на базе ASIO), работа с URI и прочие базовые для веба вещи: cpp-netlib.org
JSON: www.codeproject.com/Articles/20027/JSON-Spirit-A-C... . Есть форки на github.com, много и других библиотек, но лично мне больше эта нравится.

Первая либа еще не релиз-версии, но API уже стабилизировался, все работает. Более чем годно для малонагруженного сервера (проверено на localhost), можно и для многих посетителей, если поставить за nginx для безопасности.
P.S. Внезапная альтернатива: FastCGI (https://savannah.nongnu.org/projects/fastcgipp/) + нормальный веб-сервер.
Ответ написан
risik
@risik
Программист
Для http сервера на C++ есть, например, POCO. pocoproject.org
Правда, не уверен, есть ли там JSON из коробки.
Ответ написан
Комментировать
AxisPod
@AxisPod
Довольно простой пример сервера есть в boost::asio (ну или без буст) и при этом кандидат в C++17. Далее можно смотреть в сторону libevent (есть реализация http сервера), libev, libuv. На этом можно склепать очень годный сервер. Но это требует именно велосипедить HTTP поддержку.

Указанный выше cpp-netlib реализует работу с HTTP протоколом, но собирается очень напряжно и очень долго, чем больше кода вы напишите, тем дольше придется спать, этом могут быть часы.

Опять же указанный выше POCO имеет довольно посредственную сетевую работу, но если нагрузки большой не будет, можно смело юзать.

Опять же легковесных HTTP серверов тьма, но вот качество реализации надо проверять.

Можно взять например nginx или apache и склепать модули для них, но тут уже легко потерять всю эффективность nginx, если бегать за данными в БД. С apache будет проще.

Ну и еще нашлось https://github.com/eidheim/Simple-Web-Server , по крайней мере готовое решение на boost::asio.
Ответ написан
zenden2k
@zenden2k
PHP & C++ programmer
https://github.com/civetweb/civetweb
недостаток - сколько тредов столько и соединений
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы