

Oatpp
1 like
Create fast web services with C++ using Oat++. It's a light, zero-dependency, no-installation web-framework.
Features
- C++
- Rad
Oatpp News & Activities
Highlights All activities
Recent activities
POX added Oatpp as alternative to Frappe Framework- dkshsat reviewed Oatpp
Please use caution when using this library for anything more than a hobby. I decided that the github repository was not the right place for my rant, so here it is. I apologize in advance to the author of the library for my rant.
This library abuses macros to reduce boilerplate. The namespace organization is a mess, making reasoning impossible. Exception handling is poor, and thanks to incomprehensible macros and unexplained abstractions, there's too much to know to do even the simplest things...
Oatpp information
What is Oatpp?
Create fast web services with C++ using Oat++. It's a light, zero-dependency, no-installation web-framework.
FEATURES
- Asynchronous server (High performance. Handle 30K+ simultaneous connections)
- Multithreaded server (Simple API)
- Connection agnostic. (It cares about HTTP stream only)
- REST framework (with ability to autodocument endpoints see oatpp-swagger)
- Retrofit-like client wrapper (Use whatever request executor for example cURL, or minimalistic one provided out of the box)
- Object mapping (Fast object serialization-deserialization. Currently JSON, more formats comes shortly)
- Simple dependency injection framework
- Simple Test framework
- HTTP_1.1 (2.0 comes shortly)






Comments and Reviews
Please use caution when using this library for anything more than a hobby. I decided that the github repository was not the right place for my rant, so here it is. I apologize in advance to the author of the library for my rant.
This library abuses macros to reduce boilerplate. The namespace organization is a mess, making reasoning impossible. Exception handling is poor, and thanks to incomprehensible macros and unexplained abstractions, there's too much to know to do even the simplest things if you get a bug. You end up having to look at every part of the library in detail, which forces you to know the implementation details more than the interface. These are frequent instances where the implementation leaks to the client and negates the benefits of using the library. Overall, I don't see any advantage to this over the bottom-up approach of just wrapping your own low-level library like Boost Beast.