Oat++ is a modern Web Framework for C++. It's fully loaded and contains all necessary components for effective production level development. It's also light and has a small memory footprint.
Jacob Lauritzen 2aa6c233f6 Only build oatpp-test of OATPP_BUILD_TESTS is YES | 2 years ago | |
---|---|---|
.github | 2 years ago | |
changelog | 2 years ago | |
cmake | 2 years ago | |
fuzzers | 2 years ago | |
src | 2 years ago | |
test | 2 years ago | |
utility | 5 years ago | |
.gitignore | 3 years ago | |
CMakeLists.txt | 2 years ago | |
CODE_OF_CONDUCT.md | 5 years ago | |
CONTRIBUTING.md | 5 years ago | |
LICENSE | 6 years ago | |
README.md | 2 years ago | |
azure-pipelines.yml | 2 years ago | |
cpack.cmake | 2 years ago | |
lgtm.yml | 5 years ago |
News
1.3.0
. Now it's better than ever! See the changelog for details. :tada:Oat++ is a modern Web Framework for C++. It's fully loaded and contains all necessary components for effective production level development. It's also light and has a small memory footprint.
Start
About
Join Our Community
Shortcuts:
See ApiController for more details.
ENDPOINT_INFO(getUserById) {
info->summary = "Get one User by userId";
info->addResponse<Object<UserDto>>(Status::CODE_200, "application/json");
info->addResponse<Object<StatusDto>>(Status::CODE_404, "application/json");
info->addResponse<Object<StatusDto>>(Status::CODE_500, "application/json");
info->pathParams["userId"].description = "User Identifier";
}
ENDPOINT("GET", "users/{userId}", getUserById,
PATH(Int32, userId))
{
return createDtoResponse(Status::CODE_200, m_userService.getUserById(userId));
}
See Oat++ ORM for more details.
QUERY(createUser,
"INSERT INTO users (username, email, role) VALUES (:username, :email, :role);",
PARAM(oatpp::String, username),
PARAM(oatpp::String, email),
PARAM(oatpp::Enum<UserRoles>::AsString, role))
Oat++ is used for many different purposes, from building REST APIs that run on embedded devices to building microservices and highly-loaded cloud applications.
But the majority of use cases appears to be in IoT and Robotics.
Theoretically, Oat++ can be easily ported everywhere where you have threads and network stack. With an additional comparably small effort, it can be ported almost everywhere depending on how much you strip it and what would be the final binary size.
See supported platforms for additional info.
About 1Mb, depending on C/C++ std-lib and oatpp version.
Always choose Simple API wherever possible. Simple API is more developed and makes the code cleaner.
Async API is designed for small, specific tasks that run at high concurrency levels ex.:
For all other purposes use simple API.