2014-07-08 09:50:38 +00:00
|
|
|
# Crow
|
2014-03-29 20:40:24 +00:00
|
|
|
|
2014-04-25 22:43:05 +00:00
|
|
|
Crow is C++ microframework for web. (inspired by Python Flask)
|
2014-04-18 22:12:56 +00:00
|
|
|
|
2014-07-08 02:59:58 +00:00
|
|
|
(still in development, not completed yet)
|
2014-04-18 22:12:56 +00:00
|
|
|
|
2014-07-08 09:50:38 +00:00
|
|
|
## Example
|
2014-07-08 02:59:58 +00:00
|
|
|
|
|
|
|
```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();
|
|
|
|
}
|
|
|
|
```
|
2014-07-08 09:50:38 +00:00
|
|
|
|
|
|
|
## How to Build
|
|
|
|
|
2014-07-09 07:18:23 +00:00
|
|
|
### Installing missing dependencies
|
|
|
|
|
|
|
|
#### Ubuntu
|
2014-07-08 10:09:15 +00:00
|
|
|
sudo apt-get install build-essential libtcmalloc-minimal4 && sudo ln -s /usr/lib/libtcmalloc_minimal.so.4 /usr/lib/libtcmalloc_minimal.so
|
2014-07-09 07:18:23 +00:00
|
|
|
|
|
|
|
### Building
|
|
|
|
git submodule init && git submodule update
|
2014-07-08 09:50:38 +00:00
|
|
|
make -j$(($(grep -c '^processor' /proc/cpuinfo)+1))
|