Crow Web框架

https://crowcpp.org

Crow is C++ microframework for web. (inspired by Python Flask)

入门

1
2
3
4
5
6
7
8
9
10
11
12
#include "crow.h"

int main()
{
crow::SimpleApp app;

CROW_ROUTE(app, "/")([](){
return "Hello world";
});

app.port(18080).multithreaded().run();
}

JSON Response

1
2
3
4
5
6
CROW_ROUTE(app, "/json")
([]{
crow::json::wvalue x;
x["message"] = "Hello, World!";
return x;
});

Arguments

1
2
3
4
5
6
7
8
CROW_ROUTE(app,"/hello/<int>")
([](int count){
if (count > 100)
return crow::response(400);
std::ostringstream os;
os << count << " bottles of beer!";
return crow::response(os.str());
});

Handler arguments type check at compile time

1
2
3
4
5
// Compile error with message "Handler type is mismatched with URL paramters"
CROW_ROUTE(app,"/another/<int>")
([](int a, int b){
return crow::response(500);
});

Handling JSON Requests

1
2
3
4
5
6
7
8
9
10
11
CROW_ROUTE(app, "/add_json")
.methods("POST"_method)
([](const crow::request& req){
auto x = crow::json::load(req.body);
if (!x)
return crow::response(400);
int sum = x["a"].i()+x["b"].i();
std::ostringstream os;
os << sum;
return crow::response{os.str()};
});

进阶

!!!

!!!