我想在Windows上使用c++,Restinio处理服务器端的POST请求。我没有找到任何有用的示例,并且语法很难理解。请帮助我提供该项目的基本示例代码。
最佳答案
与处理HTTP POST请求有两个方面。
第一个也是最简单的一个方法是为请求指定处理程序。如果使用express-router,则为特定路径设置HTTP POST处理程序非常简单:
router->http_post("/some/your/path",
[](const auto & req, const auto & params) {
... // Code of your request handler here.
});
但是,如果您不使用express-router,则必须手动检查传入请求的方法:
auto your_handler(const restinio::request_handle_t & req) {
if(restinio::http_method_post() == req->header().method()) {
... // Code for handling HTTP POST request.
}
...
}
第二个也是最困难的方面是处理POST的主体(可通过
req->body()
方法获得该主体)。在那里,您必须检查Content-Type
HTTP header 并做出适当的反应:Content-Type
是application/x-www-form-urlencoded
,则可以使用RESTinio的parse_query
帮助器函数将主体拆分为(键,值)对的列表。 Here您可以找到有关如何完成此操作的示例。 Content-Type
是multipart/form-data
,那么您必须处理多部分主体。在这种情况下,可以使用RESTinio的助手,例如detect_boundary_for_multipart_body + split_multipart_body或enumerate_parts。另请参见content-disposition帮助器。 Content-Type
包含一些特定于应用程序的值(例如application/json
),则您必须以特定于应用程序的方式处理POST主体的内容(例如使用JSON解析器从主体反序列化数据)。您可以看看restinio-crud-demo来了解这种情况(以非常简单的形式,因为它是一个演示而不是生产代码)。 关于c++ - 如何在Restinio中使用POST处理程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57953811/