【发布时间】:2023-04-08 10:55:01
【问题描述】:
看看 Java、C# 和 Python 等高级语言如何将 http 请求作为客户端处理,我想知道当今 c++ 中的默认方法是什么。
我的要求是:
- REST 接口的 HTTP 客户端
- 基于 SSL 的 HTTP
- 支持 OAuth2 客户端凭据
OAuth2 支持我很快就抓到并接受了,这需要实现。
我找到了一些库,但其中大多数似乎已经过时并且有点“不专业”。
所以这里列出了我能找到的内容以及我对这些内容的看法:
libcurl
虽然这似乎是最专业的选择。 C API 很糟糕,当然不存在 OAuth 支持。但这似乎是我目前的最佳选择。
心肺复苏术
libcurl 的 c++ 包装器,它似乎是一个维护得很糟糕的库,这是一个 nono。它似乎有 https 支持,但在 github md 中它说它没有。
curlpp
这个项目似乎不再维护了。
boost::asio
如果我没记错的话,这里的一切都是我自己做的。我试图得到某事。完成并且不想重新发明轮子。
Qt
虽然看起来不错,但我有点不愿意使用 UI 框架进行通信。但也许我错了。
cpprestsdk
虽然起初看起来很适合我的目的,但不支持 OAuth2 客户端凭据。整个 OAuth2 部分被标记为实验性的。这就是现在几年的情况。似乎未完成且维护不善。
结论
所以可能 c++ 不是你做 http 客户端的常用语言,但这是一个基本的东西,我对那里的库感到惊讶。
我错过了什么大事吗?
这方面的默认方法是什么?有没有更好的“高级”选择。还是默认方法是使用低级 boost::asio 样式以获得最佳性能?
【问题讨论】:
-
这感觉像是变相的推荐图书馆问题,但可能只是我误读了它。
-
是的,你是对的。我不知道不允许这样做。另一方面,我很高兴看到有关此主题的问题。
-
如果您知道自己需要做什么,围绕
libcurl构建一个小型 C++ 包装器非常容易。我制作了一个非常简单的基类,易于构建 (@github),但我对OAuth2的了解还不够,无法添加对它的支持。libcurl确实以某种方式支持它。至少它有一个CURLOPT_XOAUTH2_BEARER选项。
标签: c++ rest oauth-2.0 httpclient