Crow
Proxygen
Our great sponsors
Crow | Proxygen | |
---|---|---|
35 | 6 | |
2,662 | 8,001 | |
6.2% | 0.3% | |
8.2 | 9.2 | |
9 days ago | 6 days ago | |
C++ | C++ | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Crow
-
Experience using crow as web server
I'm investigating using C++ to build a REST server, and would love to know of people's experiences with Crow-- or whether they would recommend something else as a "medium-level" abstraction C++ web server. As background, I started off experimenting with Python/FastAPI, which is great, but there is too much friction to translate from pybind11-exported C++ objects to the format that FastAPI expects, and, of course, there are inherent performance limitations using Python, which could impact scaling up if the project were to be successful.
-
REST APIs using C++. (Is this even done much?)
How about Crow?
-
What library/framework to use for writing a Web server?
https://github.com/CrowCpp/Crow is super easy to use
-
Transport agnostic Websocket library
I recommend Crow, it's a web framework that supports HTTP and Websockets. It's a bit larger than being only there to just let you compose or decode a packet. But I'm pretty sure everything you mentioned is there already :)
-
What's next after learncpp.com?
It's also very useful to get to grips with using some popular libraries. Some might be ones that you'll find yourself using everywhere (e.g. fmt, spdlog, catch2), and some that have more specific usage, but are good to try out and explore what C++ can do in a ridiculously easy-to-use manner (e.g. crow, Dear ImGui). Make some toy projects that use some of these and you'll learn a lot.
-
Can I use C++ in the backend ?? Any frameworks there ??
I've been working on Crow for quite a while now, it's a pretty cool framework IMO.
-
Have there been any attempts to build a REST API service on top of either Boost.asio or Boost.beast?
You can also consider https://crowcpp.org/.
- Networking TS: first impression and questions;
-
A year and a half ago I picked up an abandoned C++ web Framework, Today we released v1.0
cmake_minimum_required (VERSION 3.11) project(crow_test LANGUAGES CXX VERSION 0.0.1 ) add_executable(crow_test) set_property(TARGET crow_test PROPERTY CXX_STANDARD 17) file(GLOB sources src/*.cpp src/*.h) target_sources(crow_test PRIVATE ${sources} ) find_package(Threads REQUIRED) # use static libs for all projects SET(BUILD_SHARED_LIBS OFF CACHE BOOL "Use static libs") # --- Fetch CROW -------------------------------------------------------------- include(FetchContent) set(FETCHCONTENT_UPDATES_DISCONNECTED TRUE) FetchContent_Declare(crow GIT_REPOSITORY https://github.com/CrowCpp/Crow GIT_TAG v1.0 ) FetchContent_GetProperties(crow) if(NOT crow_POPULATED) FetchContent_Populate(crow) add_subdirectory(${crow_SOURCE_DIR} ${crow_BINARY_DIR} EXCLUDE_FROM_ALL) endif() # ------------------------------------------------------------------------------ target_link_libraries(crow_test PRIVATE Crow::Crow ) install(TARGETS crow_test RUNTIME DESTINATION .) install(DIRECTORY static/ DESTINATION static) set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF) set(CPACK_OUTPUT_FILE_PREFIX "") set(CPACK_GENERATOR "ZIP" CACHE STRING "Zip Generator") include(CPack)
Today we released version 1.0, which aside from being the first non pre-release version, improves considerably on all parts of the framework. The changes include Blueprints (similar to python flask), a new HTTP Parser, CMake support, easily allowing multiple source files in downstream projects, C++20 support, and many more features and fixes. full changelog here.
Proxygen
- Nghttp3 1.0.0 – HTTP/3 library written in C
- Zap – fast back ends in Zig
- C++ (or C, I guess) application server that's QUIC/HTTP3 ready?
-
kleinsHTTP: A stupid stupidly simple HTTP Server
proxygen claims to support all 3, although I'm still not sure if it's an actual library or just an interface.
-
cpprestsdk in maintenance mode
If you need an embedded C++ HTTP server then there are plenty of libraries/frameworks (in random order): Crow, RESTinio, Boost.Beast, cpp-httplib, http_backend, Pistache, RestBed, served, proxygen, Simple-Web-Server, drogon, oat++.
-
Experiments with h3 clients + Envoy
proxygen/hq
What are some alternatives?
C++ REST SDK - The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.
cpp-httplib - A C++ header-only HTTP/HTTPS server and client library
Oat++ - 🌱Light and powerful C++ web framework for highly scalable and resource-efficient web application. It's zero-dependency and easy-portable.
Boost.Beast - HTTP and WebSocket built on Boost.Asio in C++11
POCO - The POCO C++ Libraries are powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems.
Simple-WebSocket-Server
Pistache - A high-performance REST toolkit written in C++
nghttp2 - nghttp2 - HTTP/2 C Library and tools
µWebSockets - Simple, secure & standards compliant web server for the most demanding of applications
Mongoose - Embedded Web Server