Libérer | Min. Norme C++ | Statut | Remarques |
---|---|---|---|
maître | cpp17 | ||
1.11.x | cpp17 | ||
1.10.x | cpp17 | ||
1.9.x | cpp11 | Pris en charge jusqu'au 01.01.2025 | |
<= 1.8.x | cpp11 |
C++ Requests est un simple wrapper autour de libcurl inspiré de l'excellent projet Python Requests.
Malgré son nom, l'interface simple de libcurl est tout sauf, et faire des erreurs, en abuser est une source courante d'erreur et de frustration. Utilisant les fonctionnalités de langage plus expressives de C++17
(ou C++11
si vous utilisez cpr < 1.10.0), cette bibliothèque capture l'essence des appels réseau dans quelques idiomes concis.
Voici une requête GET rapide :
# 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 ;
}
Et voici du code moins fonctionnel, plus compliqué, sans cpr.
Vous pouvez trouver la dernière documentation ici. C'est un travail en cours, mais il devrait vous donner une meilleure idée de la façon d'utiliser la bibliothèque que les tests actuels.
Les requêtes C++ prennent actuellement en charge :
Pour un aperçu rapide des fonctionnalités prévues, jetez un œil aux prochains jalons.
Si vous avez déjà un projet CMake avec lequel vous devez intégrer des requêtes C++, la principale méthode consiste à utiliser fetch_content
. Ajoutez ce qui suit à votre 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)
Cela produira la cible cpr::cpr
que vous pourrez lier de la manière habituelle :
target_link_libraries (your_target_name PRIVATE cpr::cpr)
Cela devrait le faire ! Il n'est pas nécessaire de gérer libcurl
vous-même. Toutes les dépendances sont prises en charge pour vous. Tout cela peut être trouvé dans un exemple ici .
Si vous préférez ne pas utiliser fetch_content
, vous pouvez télécharger, créer et installer la bibliothèque, puis utiliser la fonction CMake find_package()
pour l'intégrer dans un projet.
Remarque : cette fonctionnalité n'est réalisable que si CPR_USE_SYSTEM_CURL est défini. (voir #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 .
Comme alternative, si vous souhaitez basculer entre une version statique ou partagée de cpr, utilisez '-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 .
Dans votre 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
fournit un certain nombre de tests qui peuvent être exécutés via les commandes suivantes.
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
Veuillez vous référer à hedronvision/bazel-make-cc-https-easy.
Alternativement, vous pouvez installer un package spécifique à votre distribution Linux. Étant donné que très peu de distributions disposent actuellement d'un package pour cpr, la plupart des utilisateurs ne pourront pas exécuter votre programme avec cette approche.
Actuellement, nous connaissons des packages pour les distributions suivantes :
S'il n'y a pas de package pour votre distribution, essayez d'en créer un ! Si vous le faites et qu'il est ajouté aux référentiels de votre distribution, veuillez soumettre une pull request pour l'ajouter à la liste ci-dessus. Cependant, veuillez ne le faire que si vous envisagez de maintenir activement le package.
Pour Windows, un package libcpr NuGet est également disponible. Actuellement, les versions x86 et x64 sont prises en charge avec la configuration de version et de débogage.
Le package peut être trouvé ici : NuGet.org
Sur macOS, vous pouvez installer cpr via MacPorts.org (arm64, x86_64, powerpc)
Sur FreeBSD, vous pouvez émettre pkg install cpr
ou utiliser l'arborescence des ports pour l'installer.
Les seules exigences explicites sont :
C++17
tel que Clang ou GCC. La version minimale requise de GCC est inconnue, donc si quelqu'un a des difficultés à créer cette bibliothèque avec une version spécifique de GCC, faites-le nous savoir.C++11
, toutes les versions inférieures à cpr 1.9.x sont faites pour vous. La version 1.10.0 de cpr passe obligatoirement à C++17
.OpenSSL
et ses bibliothèques de développement sont requis.>= 7.64.0
. Les versions inférieures ne sont pas prises en charge. Cela signifie que vous avez besoin de Debian >= 10
ou Ubuntu >= 20.04 LTS
. Vous pouvez télécharger et installer cpr à l'aide du gestionnaire de dépendances vcpkg :
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install cpr
Le port cpr
dans vcpkg est tenu à jour par les membres de l'équipe Microsoft et les contributeurs de la communauté. Si la version est obsolète, veuillez créer un problème ou une pull request sur le référentiel vcpkg.
Vous pouvez télécharger et installer cpr
à l'aide du gestionnaire de packages Conan. Configurez votre CMakeLists.txt (voir la documentation Conan sur la façon d'utiliser MSBuild, Meson et autres). Un exemple peut être trouvé ici .
Le package cpr
dans Conan est tenu à jour par les contributeurs de Conan. Si la version est obsolète, veuillez créer un problème ou une pull request sur le référentiel conan-center-index
.