發布 | 分鐘。 C++ 標準 | 地位 | 筆記 |
---|---|---|---|
掌握 | cpp17 | ||
1.11.x | cpp17 | ||
1.10.x | cpp17 | ||
1.9.x | cpp11 | 支持至 2025 年 1 月 1 日 | |
<= 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 ;
}
這是功能較少、更複雜的代碼,沒有心肺復甦術。
您可以在此處找到最新文件。這是一項正在進行的工作,但它應該能讓您比目前的測試更了解如何使用該程式庫。
C++ 請求目前支援:
有關計劃功能的快速概述,請查看下一個里程碑。
如果您已經有一個需要整合 C++ 請求的 CMake 項目,主要方法是使用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,也有一個可用的 libcpr NuGet 套件。目前,發布和調試配置支援 x86 和 x64 版本。
該包可以在這裡找到:NuGet.org
在 macOS 上,您可以透過 MacPorts.org 安裝 cpr(arm64、x86_64、powerpc)
在 FreeBSD 上,您可以發出pkg install cpr
或使用 Ports 樹來安裝它。
唯一明確的要求是:
C++17
相容編譯器,例如 Clang 或 GCC。 GCC 所需的最低版本未知,因此如果有人在使用特定版本的 GCC 建置此程式庫時遇到問題,請告訴我們C++11
相容編譯器可用,則 cpr 1.9.x 以下的所有版本都適合您。 cpr 1.10.0 版本要求切換到C++17
。OpenSSL
及其開發庫。>= 7.64.0
。不支援較低版本。這表示您需要 Debian >= 10
或 Ubuntu >= 20.04 LTS
。 您可以使用 vcpkg 依賴項管理器下載並安裝 cpr:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install cpr
vcpkg 中的cpr
連接埠由 Microsoft 團隊成員和社群貢獻者保持最新。如果版本已過時,請在 vcpkg 儲存庫上建立問題或拉取要求。
您可以使用 Conan 套件管理器下載並安裝cpr
。設定 CMakeLists.txt(有關如何使用 MSBuild、Meson 等的信息,請參閱 Conan 文件)。可以在此處找到範例。
Conan 中的cpr
套件由 Conan 貢獻者保持最新。如果版本已過時,請在conan-center-index
儲存庫上建立問題或拉取請求。