A Boost Based C++ HTTP JSON Server.
NOTE:
- To build the dependencies & the project, refer to
BUILD-Windows.mdorBUILD-ubuntu.md.bservcontains the source code forbserv.
In Windows, you can simply open
examples/Examples.sln. In Ubuntu,examples/CMakeLists.txtcan be used to compile all the examples.
#include <bserv/common.hpp>
#include <boost/json.hpp>
boost::json::object hello()
{
return {{"msg", "hello, world!"}};
}
int main()
{
bserv::server_config config;
// config.set_port(8080);
bserv::server{config, {
bserv::make_path("/hello", &hello)
}};
}By default, bserv listens to 8080. When you make a request (of any type) to localhost:8080/hello, it will respond: {"msg": "hello, world!"}.
#include <bserv/common.hpp>
#include <boost/json.hpp>
#include <string>
boost::json::object greet(
const std::string& name)
{
return {{"hello", name}};
}
boost::json::object greet2(
const std::string& name1,
const std::string& name2)
{
return {
{"name1", name1},
{"name2", name2}
};
}
boost::json::object echo(
boost::json::object&& params)
{
return params;
}
int main()
{
bserv::server_config config;
bserv::server{config, {
bserv::make_path(
"/greet/<str>", &greet,
bserv::placeholders::_1),
bserv::make_path(
"/greet/<str>/and/<str>", &greet2,
bserv::placeholders::_1,
bserv::placeholders::_2),
bserv::make_path(
"/echo", &echo,
bserv::placeholders::json_params)
}};
}The following table shows some requests & responses:
| Method | URL | Request Body | Response Body |
|---|---|---|---|
| Any | /greet/world |
(Empty) | {"hello": "world"} |
| Any | /greet/world1/and/world2 |
(Empty) | {"name1": "world1", "name2": "world2"} |
| GET | /echo?hello=world |
(Empty) | {"hello": "world"} |
| POST | /echo |
{"hello": "world"} |
{"hello": "world"} |
All of the URLs should be prefixed with localhost:8080 when you make the requests.
WebAppis a sample project.config-Windows.jsonandconfig-ubuntu.jsonare two sample config file forWebApp's startup parameters. It should be configured and renamed toconfig.jsonbefore you startWebApp.- To use
WebApp, you should setup the database as well.
You can import the sample database:
-
Create the database in
psql:create database bserv; -
Create the table in the
shellusing a sample script:psql bserv < db.sql