【问题标题】:Default approach to a http client with c++ [closed]使用 C++ 访问 http 客户端的默认方法 [关闭]
【发布时间】: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


【解决方案1】:

我认为您跳过了大多数常见的库,例如 crow,用于小型项目和快速开发。它非常有限,但提供了足够的功能。

Poco Project 是我遇到的最成熟的库,为成熟的项目提供了很多功能。

【讨论】:

  • 我绝对忘记了 poco。我以前偶然发现它。虽然它看起来维护得很好并且绝对足够了,但“只实现一个 http 客户端”似乎有点大,但你明白了。从“把事情做好”的角度来看,这将是一个非常合适的选择。
猜你喜欢
  • 1970-01-01
  • 2021-12-19
  • 2019-12-16
  • 2019-05-23
  • 1970-01-01
  • 2011-10-10
  • 1970-01-01
  • 2012-01-13
  • 1970-01-01
相关资源
最近更新 更多