如何使用不同的 handle_post 来处理接收到的消息?(C++ REST SDK)

How to use different handle_post to process msg receives?(C++ REST SDK)

我创建了一个侦听端口 7000 的服务器。我希望我的服务器可以使用函数 void handle_post1() 来处理它收到的第一个消息,并使用 void handle_post2() 来处理第二个 http request 它收到了。 喜欢:

 listener.support(methods::POST, handle_post1);//if this is the first msg I receive
 listener.support(methods::POST, handle_post2);//if this is the second msg I receive

我试过这样编写代码,但它不起作用。 我该怎么做?

您的侦听器将在服务器端处理请求。使用 support(),您不处理特定请求,而是为所有后续请求添加处理程序。

在您的问题中,您打算根据请求的相对顺序以不同方式处理请求:第一个应由 handle_post1 处理,第二个应由 handle_post2 处理。这意味着您希望处理取决于服务器状态。

现在是提醒 Casablanca is Microsoft's C++ REST SDK. And REST implies a stateless 处理的好时机。所以你不会在那里找到任何对状态相关处理的支持。

如果你真的想继续,你可以想象使用一个 handle_dispatcher() 维护一些静态变量来计算请求并进一步委托给 handle_post1handle_post2 取决于状态。但这真的不建议。 REST 的目标是可以将不同的请求分派到不同的服务器,在这种情况下,您的分派器不会产生预期的结果。如果您不想采用这种方法,则应使用有状态框架。