【问题标题】:Simple HTTP Server lib简单的 HTTP 服务器库
【发布时间】:2012-01-15 01:10:33
【问题描述】:

对于简单的 http 服务器库,什么是好的选择?它不需要高性能。我宁愿为一些 REST/JSON 通信(“API”)寻找一些简单的东西。

它必须能够在多线程环境中工作,并且必须能够处理大型 POST 请求。

有什么建议吗?我已经尝试过 cpp-netlib 但这对于这么简单的任务来说似乎太复杂了......

编辑:我正在寻找真正轻量级和简单的东西。例如。就像 Ruby 世界中的 Sinatra。 Poco 对我来说是另一个过于重量级的库的例子。

【问题讨论】:

  • @MK。确实是这样,但这是 2009 年的封闭问题,现在情况可能有所不同。例如,Poco 不在那里。不过,可能还有 /other/ 最近的问题!
  • 也许检查stackoverflow.com/questions/7980006/… - 这真的是最近的。
  • 我查看了“重复问题”,但没有看到任何符合我描述的内容。 (C++,非常轻量级,非常简单,实际的库)
  • 好吧,我认为将 C++ 列为轻量级嵌入式 Web 服务器的要求是愚蠢的。如果你的库是 C 或 C++,只要它链接,你关心什么?

标签: c++ http


【解决方案1】:

首先想到的是 Poco Library (http://pocoproject.org/)

跨平台、稳定、有据可查。虽然库本身提供的功能可能超出您的需要,但您可以构建并省略您不打算使用的部分来减少臃肿。

他们有一个功能齐全的网络库,其中包括几个突出的类和实用程序。

这是该库中幻灯片的 pdf,特别感兴趣的是 HTTPServer 类: http://pocoproject.org/slides/200-Network.pdf

【讨论】:

  • 看起来像一个很棒的库,但我正在寻找更轻量级的东西。
【解决方案2】:

不确定是否有大量 POST 数据,但我之前使用过 mongoose:https://github.com/cesanta/mongoose/

如果不需要 LGPL 许可证,则项目是 MIT 时的 MIT 分支也添加了 C++ API https://github.com/bel2125/civetweb

【讨论】:

    【解决方案3】:

    我鼓励您从 boost.asio 中的 http 服务器示例开始。它们非常简单易懂,您应该能够根据需要轻松扩展它们。

    但是,如果您想跳到比示例代码更精致的东西,我知道您可能想尝试使用 C++ 中的 3 个 http 服务器:

    • “x0 - HTTP Web 服务器框架”对我个人来说似乎最有前途,因为它轻量级且简单
    • “highpower / xiva”是一个简单的http服务器框架,用于向浏览器发送通知
    • “Pion,Atomic Labs 的一个项目”是处理大量数据的精细框架的一部分

    【讨论】:

    • 谢谢,这个 boost 示例代码是目前我最喜欢的解决方案!作为图书馆的代码和我所有的愿望都会实现......
    • 将这些示例更改为库代码非常简单:将int main() 转换为线程函数并在自己的线程中启动它;添加到 server.hpp 函数 "void stop() { io_service_.stop(); } 并将其适当地暴露在某个地方。然而,正如我之前所说,这些样品有些粗糙,例如连接中的套接字关闭可能会丢失正在发送的数据等。
    【解决方案4】:

    就个人而言,我会选择 Arachnida (http://arachnida.sf.net),但这可能是因为我写的。

    【讨论】:

      【解决方案5】:

      很晚的答案;但希望这会有所帮助。
      为了您对可以处理 REST 的服务器感兴趣,这里是最容易使用的 HTTP 服务器库(在我看来):https://github.com/yhirose/cpp-httplib
      对于 JSON 解析,您可以搜索另一个库来结合使用它。

      【讨论】:

        猜你喜欢
        • 2019-07-29
        • 1970-01-01
        • 2016-12-21
        • 1970-01-01
        • 1970-01-01
        • 2020-11-12
        • 2015-04-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多