mirror of
https://github.com/CrowCpp/Crow.git
synced 2024-06-07 21:10:44 +00:00
77 lines
1.6 KiB
Markdown
77 lines
1.6 KiB
Markdown
# Crow
|
|
|
|
Crow is C++ microframework for web. (inspired by Python Flask)
|
|
|
|
(still in development, not completed yet)
|
|
|
|
## Example
|
|
|
|
```c++
|
|
|
|
#include "crow.h"
|
|
#include "json.h"
|
|
|
|
#include <sstream>
|
|
|
|
int main()
|
|
{
|
|
crow::Crow app;
|
|
|
|
CROW_ROUTE(app, "/")
|
|
.name("hello")
|
|
([]{
|
|
return "Hello World!";
|
|
});
|
|
|
|
CROW_ROUTE(app, "/about")
|
|
([](){
|
|
return "About Crow example.";
|
|
});
|
|
|
|
// simple json response
|
|
CROW_ROUTE(app, "/json")
|
|
([]{
|
|
crow::json::wvalue x;
|
|
x["message"] = "Hello, World!";
|
|
return x;
|
|
});
|
|
|
|
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());
|
|
});
|
|
|
|
// Compile error with message "Handler type is mismatched with URL paramters"
|
|
//CROW_ROUTE(app,"/another/<int>")
|
|
//([](int a, int b){
|
|
//return crow::response(500);
|
|
//});
|
|
|
|
// more json example
|
|
CROW_ROUTE(app, "/add_json")
|
|
([](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()};
|
|
});
|
|
|
|
app.port(18080)
|
|
.multithreaded()
|
|
.run();
|
|
}
|
|
```
|
|
|
|
## How to Build
|
|
|
|
### Ubuntu
|
|
sudo apt-get install build-essential libtcmalloc-minimal4 && sudo ln -s /usr/lib/libtcmalloc_minimal.so.4 /usr/lib/libtcmalloc_minimal.so
|
|
make -j$(($(grep -c '^processor' /proc/cpuinfo)+1))
|