Выпускать | Мин. Стандарт С++ | Статус | Примечания |
---|---|---|---|
владелец | cpp17 | ||
1.11.х | cpp17 | ||
1.10.х | cpp17 | ||
1.9.х | cpp11 | Поддерживается до 01.01.2025 | |
<= 1.8.x | cpp11 |
C++ Requests — это простая оболочка libcurl, вдохновленная отличным проектом Python Requests.
Несмотря на свое название, простой интерфейс libcurl совсем не похож на него, и ошибки и неправильное его использование являются распространенным источником ошибок и разочарований. Используя более выразительные возможности языка C++17
(или C++11
, если вы используете cpr < 1.10.0), эта библиотека отражает суть сетевых вызовов в нескольких кратких идиомах.
Вот быстрый запрос GET:
# include < cpr/cpr.h >
int main ( int argc, char ** argv) {
cpr::Response r = cpr::Get (cpr::Url{ " https://api.github.com/repos/whoshuu/cpr/contributors " },
cpr::Authentication{ " user " , " pass " , cpr::AuthMode::BASIC},
cpr::Parameters{{ " anon " , " true " }, { " key " , " value " }});
r. status_code ; // 200
r. header [ " content-type " ]; // application/json; charset=utf-8
r. text ; // JSON text string
return 0 ;
}
А вот менее функциональный, более сложный код, без cpr.
Вы можете найти последнюю версию документации здесь. Эта работа еще продолжается, но она должна дать вам лучшее представление о том, как использовать библиотеку, чем тесты, которые сейчас дают.
Запросы C++ в настоящее время поддерживают:
Чтобы получить краткий обзор запланированных функций, ознакомьтесь со следующими этапами.
Если у вас уже есть проект CMake, с которым необходимо интегрировать запросы C++, основной способ — использовать fetch_content
. Добавьте следующее в свой CMakeLists.txt
.
include (FetchContent)
FetchContent_Declare(cpr GIT_REPOSITORY https://github.com/libcpr/cpr.git
GIT_TAG dec9422db3af470641f8b0d90e4b451c4daebf64) # Replace with your desired git commit from: https://github.com/libcpr/cpr/releases
FetchContent_MakeAvailable(cpr)
Это создаст целевой cpr::cpr
, который вы можете связать обычным способом:
target_link_libraries (your_target_name PRIVATE cpr::cpr)
Это должно сработать! Нет необходимости самостоятельно обрабатывать libcurl
. Обо всех зависимостях позаботятся за вас. Все это можно найти в примере здесь .
Если вы предпочитаете не использовать fetch_content
, вы можете скачать, собрать и установить библиотеку, а затем использовать функцию CMake find_package()
для интеграции ее в проект.
Примечание. Эта функция возможна только в том случае, если установлен CPR_USE_SYSTEM_CURL. (см. № 645)
git clone https://github.com/libcpr/cpr.git
cd cpr && mkdir build && cd build
cmake .. -DCPR_USE_SYSTEM_CURL=ON
cmake --build . --parallel
sudo cmake --install .
В качестве альтернативы, если вы хотите переключиться между статической или общей версией cpr, используйте «-DBUILD_SHARED_LIBS=ON/OFF».
git clone https://github.com/libcpr/cpr.git
cd cpr && mkdir build && cd build
cmake .. -DCPR_USE_SYSTEM_CURL=ON -DBUILD_SHARED_LIBS=OFF
cmake --build . --parallel
sudo cmake --install .
В вашем CMakeLists.txt
:
find_package (cpr REQUIRED)
add_executable (your_target_name your_target_name.cpp)
target_link_libraries (your_target_name PRIVATE cpr::cpr)
cpr
предоставляет набор тестов, которые можно выполнить с помощью следующих команд.
git clone https://github.com/libcpr/cpr.git
cd cpr && mkdir build && cd build
cmake .. -DCPR_BUILD_TESTS=ON # There are other test related options like 'CPR_BUILD_TESTS_SSL' and 'CPR_BUILD_TESTS_PROXY'
cmake --build . --parallel
ctest -VV # -VV is optional since it enables verbose output
Пожалуйста, обратитесь к hedronvision/bazel-make-cc-https-easy.
Альтернативно вы можете установить пакет, специфичный для вашего дистрибутива Linux. Поскольку в настоящее время лишь немногие дистрибутивы имеют пакет для cpr, большинство пользователей не смогут запустить вашу программу при таком подходе.
На данный момент нам известны пакеты для следующих дистрибутивов:
Если для вашего дистрибутива нет пакета, попробуйте создать его! Если вы это сделаете и он будет добавлен в репозитории вашего дистрибутива, отправьте запрос на включение, чтобы добавить его в список выше. Однако делайте это только в том случае, если вы планируете активно поддерживать пакет.
Для Windows также доступен пакет NuGet libcpr. В настоящее время поддерживаются сборки x86 и x64 с конфигурацией выпуска и отладки.
Пакет можно найти здесь: NuGet.org.
В macOS вы можете установить cpr через MacPorts.org (arm64, x86_64, powerpc).
Во FreeBSD вы можете запустить pkg install cpr
или использовать дерево портов для его установки.
Единственными явными требованиями являются:
C++17
например Clang или GCC. Минимально необходимая версия GCC неизвестна, поэтому, если у кого-то возникнут проблемы со сборкой этой библиотеки с определенной версией GCC, сообщите нам об этом.C++11
, вам подойдут все версии ниже cpr 1.9.x. Версия 1.10.0 cpr переключается на C++17
по требованию.OpenSSL
и его библиотеки разработки.>= 7.64.0
. Более низкие версии не поддерживаются. Это означает, что вам нужен Debian >= 10
или Ubuntu >= 20.04 LTS
. Вы можете скачать и установить cpr с помощью менеджера зависимостей vcpkg:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install cpr
Порт cpr
в vcpkg обновляется членами команды Microsoft и участниками сообщества. Если версия устарела, создайте проблему или запрос на извлечение в репозитории vcpkg.
Вы можете загрузить и установить cpr
с помощью менеджера пакетов Conan. Настройте CMakeLists.txt (см. документацию Conan о том, как использовать MSBuild, Meson и другие). Пример можно найти здесь .
Пакет cpr
в Conan обновляется участниками Conan. Если версия устарела, создайте проблему или запрос на извлечение в репозитории conan-center-index
.