babelouest/ulfius
FreeWeb Framework to build REST APIs, Webservices or any HTTP endpoint in C language. Can stream large amount of data, integrate JSON data with Jansson, and create websocket services
About babelouest/ulfius
Ulfius is a C-based HTTP framework designed for building REST APIs, webservices, and HTTP endpoints with a small memory footprint, making it suitable for embedded systems. It leverages GNU Libmicrohttpd for the backend web server, Jansson for JSON handling, and Libcurl for HTTP/SMTP client requests. The framework supports streaming large amounts of data, WebSocket services (both server and client), and includes a CLI tool (uwsc) for connecting to remote WebSockets. It provides a callback-based endpoint system, client request execution with parsed responses, and comprehensive documentation via INSTALL.md and API.md.
Key Features
Pros & Cons
- Small memory footprint suitable for embedded systems
- Based on mature libraries (Libmicrohttpd, Jansson, Libcurl)
- Supports both server and client WebSockets
- Built-in streaming capability
- Well-structured callback API for endpoint handling
- Comprehensive example programs provided
- Requires C programming knowledge, not suitable for non-C developers
- Manual memory management required
- Documentation is reference-based (API.md) rather than tutorial-style
- Limited to HTTP-based protocols; no built-in support for other transports