我正在使用 Microsoft 的 cpprestsdk(又名 casablanca)开发 REST api,并且在执行我的代码时无法保持服务器运行。
在这里查看我的 main.cpp:
int main() {
cout << "Starting Server" << endl;
TransactionController server;
server.setEndpoint("http://0.0.0.0:4200/api");
server.initHandlers();
try {
server.openServer();
cout << "Server listening at: " << server.getEndpoint() << endl;
// figure out how to keep server running without this?
while (true);
}
catch(exception &e) {
cout << "--- ERROR DETECTED ---" << endl;
cout << e.what() << endl;
}
// this doesn't get reached bc of the while(true)
server.closeServer();
return 0;
}
此外,作为参考,这是我在 main.cpp 中的实现或功能:
pplx::task<void> TransactionController::openServer() {
return listener.open();
}
pplx::task<void> TransactionController::closeServer() {
return listener.close();
}
std::string TransactionController::getEndpoint() const{
return listener.uri().to_string();
}
void TransactionController::initHandlers() {
listener.support(methods::GET, bind(&TransactionController::handleGet, this, std::placeholders::_1));
listener.support(methods::POST, bind(&TransactionController::handlePost, this, placeholders::_1));
}
void TransactionController::setEndpoint(const string& value) {
listener = http_listener(value);
}
我发现添加一个不理想的解决方法
while(true);
保持服务器运行,直到我手动停止执行。
但是,我想以更优雅的方式实现此功能。我已经在线浏览了文档,但未能找到正确的方法。
任何正确方向的提示或指示将不胜感激,因为我以前从未与卡萨布兰卡合作过。感谢您的时间!