Freigeben | Min. C++-Standard | Status | Notizen |
---|---|---|---|
Master | cpp17 | ||
1.11.x | cpp17 | ||
1.10.x | cpp17 | ||
1.9.x | cpp11 | Unterstützt bis 01.01.2025 | |
<= 1,8.x | cpp11 |
C++ Requests ist ein einfacher Wrapper für libcurl, der vom hervorragenden Python Requests-Projekt inspiriert ist.
Trotz des Namens ist die einfache Benutzeroberfläche von libcurl alles andere als das, und Fehler zu machen oder sie falsch zu verwenden, ist eine häufige Fehler- und Frustrationsquelle. Diese Bibliothek nutzt die ausdrucksstärkeren Sprachfunktionen von C++17
(oder C++11
, falls Sie cpr < 1.10.0 verwenden) und fasst die Essenz von Netzwerkaufrufen in ein paar prägnanten Redewendungen zusammen.
Hier ist eine kurze GET-Anfrage:
# 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 ;
}
Und hier ist weniger funktionaler, komplizierterer Code ohne CPR.
Die aktuelle Dokumentation finden Sie hier. Es ist noch in Arbeit, aber es sollte Ihnen eine bessere Vorstellung davon vermitteln, wie Sie die Bibliothek verwenden können, als dies die Tests derzeit tun.
C++ Requests unterstützt derzeit:
Für einen schnellen Überblick über die geplanten Features werfen Sie einen Blick auf die nächsten Meilensteine.
Wenn Sie bereits über ein CMake-Projekt verfügen, in das Sie C++-Anfragen integrieren müssen, ist die primäre Möglichkeit die Verwendung fetch_content
. Fügen Sie Folgendes zu Ihrer CMakeLists.txt
hinzu.
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)
Dadurch wird das Ziel cpr::cpr
erstellt, das Sie auf die übliche Weise verknüpfen können:
target_link_libraries (your_target_name PRIVATE cpr::cpr)
Das sollte reichen! Sie müssen sich nicht selbst um libcurl
kümmern. Alle Abhängigkeiten werden für Sie erledigt. All dies finden Sie hier in einem Beispiel.
Wenn Sie fetch_content
nicht verwenden möchten, können Sie die Bibliothek herunterladen, erstellen und installieren und sie dann mit der Funktion find_package()
von CMake in ein Projekt integrieren.
Hinweis: Diese Funktion ist nur möglich, wenn CPR_USE_SYSTEM_CURL festgelegt ist. (siehe #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 .
Wenn Sie alternativ zwischen einer statischen oder gemeinsam genutzten Version von cpr wechseln möchten, verwenden Sie „-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 .
In Ihrer 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
bietet eine Reihe von Tests, die über die folgenden Befehle ausgeführt werden können.
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
Weitere Informationen finden Sie unter hedronvision/bazel-make-cc-https-easy.
Alternativ können Sie ein für Ihre Linux-Distribution spezifisches Paket installieren. Da derzeit nur wenige Distributionen über ein Paket für cpr verfügen, können die meisten Benutzer Ihr Programm mit diesem Ansatz nicht ausführen.
Derzeit sind uns Pakete für die folgenden Distributionen bekannt:
Wenn es für Ihre Distribution kein Paket gibt, versuchen Sie, eines zu erstellen! Wenn Sie dies tun und es zu den Repositorys Ihrer Distribution hinzugefügt wird, senden Sie bitte eine Pull-Anfrage, um es zur obigen Liste hinzuzufügen. Bitte tun Sie dies jedoch nur, wenn Sie planen, das Paket aktiv zu pflegen.
Für Windows ist auch ein libcpr-NuGet-Paket verfügbar. Derzeit werden x86- und x64-Builds mit Release- und Debug-Konfiguration unterstützt.
Das Paket finden Sie hier: NuGet.org
Unter macOS können Sie cpr über MacPorts.org installieren (arm64, x86_64, powerpc).
Unter FreeBSD können Sie pkg install cpr
ausführen oder den Ports-Baum verwenden, um es zu installieren.
Die einzigen expliziten Anforderungen sind:
C++17
kompatibler Compiler wie Clang oder GCC. Die mindestens erforderliche Version von GCC ist unbekannt. Wenn also jemand Probleme beim Erstellen dieser Bibliothek mit einer bestimmten Version von GCC hat, teilen Sie uns dies bitte mitC++11
kompatiblen Compiler verfügen, sind alle Versionen unter cpr 1.9.x für Sie geeignet. Die Version 1.10.0 von cpr wechselt als Anforderung zu C++17
.OpenSSL
und seine Entwicklungsbibliotheken erforderlich.>= 7.64.0
verwenden. Niedrigere Versionen werden nicht unterstützt. Das bedeutet, dass Sie Debian >= 10
oder Ubuntu >= 20.04 LTS
benötigen. Sie können cpr mit dem vcpkg-Abhängigkeitsmanager herunterladen und installieren:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install cpr
Der cpr
Port in vcpkg wird von Microsoft-Teammitgliedern und Community-Mitwirkenden auf dem neuesten Stand gehalten. Wenn die Version veraltet ist, erstellen Sie bitte einen Issue oder Pull Request im vcpkg-Repository.
Sie können cpr
mit dem Conan-Paketmanager herunterladen und installieren. Richten Sie Ihre CMakeLists.txt ein (siehe Conan-Dokumentation zur Verwendung von MSBuild, Meson und anderen). Ein Beispiel finden Sie hier .
Das cpr
Paket in Conan wird von Conan-Mitwirkenden auf dem neuesten Stand gehalten. Wenn die Version veraltet ist, erstellen Sie bitte einen Issue oder Pull Request im conan-center-index
Repository.