简单的HTTP服务器库

7
什么是一个简单的http服务器库的好选择?它不需要高性能。我更喜欢找一些用于REST/JSON通信(“API”)的简单东西。
但它必须能够在多线程环境中工作,并且必须能够处理大型POST请求。
有什么建议吗?我已经尝试了cpp-netlib,但这似乎对于这样一个简单的任务来说过于复杂...
编辑:我正在寻找真正轻量级和简单的东西。例如,就像Ruby世界中的Sinatra一样。Poco对我来说是另一个太重的库的例子。

1
可能是开源C/C++嵌入式Web服务器的重复问题。 - MK.
1
@MK。确实如此,但那是2009年的已关闭问题,现在情况可能不同了。例如,Poco就不在那里了。不过可能有其他更近期的问题! - Stefano
也许可以查看http://stackoverflow.com/questions/7980006/http-and-https-server-library-for-c - 这是最近的。 - Stefano
我查看了“重复问题”,但没有找到符合我的描述的内容。(C++,非常轻量级,非常简单,实际库) - Philip
1
我认为将C++列为轻量级嵌入式Web服务器的要求是愚蠢的。只要库链接成功,你又何必在意它是C还是C++呢? - MK.
5个回答

12

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

该库跨平台、稳定、文档齐全。虽然该库本身提供了比你实际需要的更多,但你可以构建并省略你不打算使用的部分来减少臃肿。

他们拥有一个功能齐全的Net库,包括几个重要的类和实用程序。

这里是该库幻灯片的pdf文件,尤其有趣的是HTTPServer类: http://pocoproject.org/slides/200-Network.pdf


看起来是一个很棒的库,但我正在寻找更轻量级的东西。 - Philip

5

4
我建议你从boost.asio的http服务器示例开始。它们非常简单易懂,你应该能够根据需要轻松扩展它们。
但是,如果你想尝试更成熟的代码,我知道三个C++ HTTP服务器可能会对你有帮助:
- “x0 - HTTP Web Server Framework”对我来说似乎是最有前途的,因为它轻量级而且简单。 - “highpower / xiva”是一个简单的HTTP服务器框架,用于向浏览器发送通知。 - “Pion, a project of Atomic Labs”是处理大量数据的复杂框架的一部分。

谢谢,这个 Boost 示例代码目前是我最喜欢的解决方案!如果能把这段代码作为一个库来使用,那就太完美了... - Philip
将这些示例更改为库代码非常简单:将 int main() 转换为线程函数并在其自己的线程中启动;在 server.hpp 中添加函数 "void stop() { io_service_.stop(); } 并适当地公开它。但是,正如我之前所说,这些示例有些未经打磨,例如连接中的套接字关闭可能会丢失正在发送的数据等。 - bronekk

2
很晚才回答,但希望能够帮到您。
如果您需要一个能够处理REST的服务器,这里是在我看来最易于使用的HTTP服务器库:https://github.com/yhirose/cpp-httplib
至于JSON解析,您可以寻找另一个库来与其结合使用。

1

个人而言,我会选择Arachnida,但这可能是因为我写了它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接