下载与安装
- 官方网站
- github
- 下载自己需要的relaease即可
- C++包的头文件在
/usr/include目录下 - 但是出现错误fatal error: boost/optional.hpp: No such file or directory
- 此时安装
boost,也就是sudo apt-get install libboost-all-dev - 然后又报错
undefined reference to pthread_sigmask,此时在编译后加参数-lpthread添加多线程库 - 但是还有错误
undefined reference to boost::system::system_category()'之类的,需要添加参数-lboost_system -lboost_thread - 最终的编译命令为
g++ ./crowHelloWorld.cpp -o helloWorld -lpthread -lboost_system -lboost_thread - 输出结果
一个简单的包含前后端互换数据的案例
- 新手参考
后端
int main()
{
crow::SimpleApp app;
CROW_ROUTE(app, "/")([](){
auto page = crow::mustache::load_text("./mainPage.html");
return page;
});
CROW_ROUTE(app, "/data").methods("POST"_method)([](const crow::request& req){
auto x = crow::json::load(req.body);
std::cout<<x["data"]<<std::endl;
crow::json::wvalue retDict;
retDict["message"] = x["data"];
return crow::response(retDict);
});
app.port(8080).multithreaded().run();
}前端
- 注意后端发送的JSON数据不需要解析(PARSE)
<head>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
</head>
<body>
<input placeholder="send something..." id="input">
<button onclick="sendAjax()">send</button> <br>
<div id="div1"></div>
</body>
<script>
var input = document.getElementById("input");
var div1 = document.getElementById("div1");
function sendAjax() {
$.ajax({
type: "POST",
url: "/data",
data: JSON.stringify({ 'data': input.value }),
success: function (datas) {
console.log(datas);
// dataDict = JSON.parse(datas);
div1.innerHTML = datas['message'];
}
});
}
</script>makefile
main:
g++ ./crowHelloWorld.cpp -o main -lpthread -lboost_system -lboost_thread
clean:
# rm *.o
rm main文件目录格式
.html文件需要放在工作目录的templates文件夹下效果