在c++中处理HTTP post数据的最简单方法



我想一个网站发送数据存储到数据库。因此,我认为我需要一个web服务器,监听HTTP,解析POST,提取数据和存储到数据库?

我希望web服务器是c++。

然而,我很难找到一个简单的例子。我认为这很简单,因为我们只是在监听TCP套接字,一旦接收到所有数据,它只是一个字符串解析练习?我能找到的所有例子似乎都太复杂了。例如:

https://www.boost.org/doc/libs/1_72_0/libs/beast/example/http/server/async/http_server_async.cpp

当然不应该需要300-400行来监听一个套接字和解析一个字符串?

我的理解是错误的/有一个简单的方法来处理一个HTTP POST在c++ ?

用c++编写自己的web服务器

  • 一次只支持来自单个客户端的单个HTTP连接,
  • 假定传入的HTTP请求永远不会是格式错误的,并且总是采用某种格式,并且总是采用某种类型,
  • 在意外发生的情况下,不需要提供适当的HTTP响应,

不会太难。然而,如果你想让你的web服务器完全符合HTTP/1, HTTP/2或HTTP/3,那么编写这样的服务器将是大量的工作,因为这些标准有几十甚至几百页长。

使用现有的HTTP服务器软件(如Apache HTTP server),并编写自己的程序来服务单个HTTP请求,并配置服务器为某些url调用这些程序,可能会更有意义。这样,您就不必处理HTTP的大部分细节,但您仍然需要处理HTTP请求和HTTP响应。

一些脚本语言,如PHP(设计用于在web服务器上运行)为您处理大部分剩余的HTTP细节,因此您例如不必担心解释HTTP请求头和创建HTTP响应头。这些脚本语言通常还允许您连接到外部数据库服务器。

如果你不想使用脚本语言,但更喜欢用c++编写的程序来处理单个HTTP请求,那么这也是可能的,例如使用CGI或HTTP服务器软件提供的API。

我建议你使用c++14的restbed库。在你这样的情况下很容易使用。这完全取决于你的字符串,但我想你可以解决你的问题,最多50行。有了这个库,处理post请求非常容易。您可以将处理程序实现为函数,并将它们作为方法处理程序提供给库。库文档:https://github.com/Corvusoft/restbed/blob/master/documentation/API.md?ysclid=l4ny6wicl231191828