Marco HTTP para aplicaciones REST en C.
Basado en GNU Libmicrohttpd para el servidor web backend, Jansson para la biblioteca de manipulación json y Libcurl para la API del cliente http/smtp.
Se utiliza para facilitar la creación de aplicaciones web en programas C con una pequeña huella de memoria, como en aplicaciones de sistemas integrados.
Puede crear servicios web en modo HTTP o HTTPS, transmitir datos o implementar websockets de servidor.
El código fuente de un hola mundo usando Ulfius es el siguiente:
/**
* test.c
* Small Hello World! example
* to compile with gcc, run the following command
* gcc -o test test.c -lulfius
*/
#include
#include
#define PORT 8080
/**
* Callback function for the web application on /helloworld url call
*/
int callback_hello_world ( const struct _u_request * request , struct _u_response * response , void * user_data ) {
ulfius_set_string_body_response ( response , 200 , "Hello World!" );
return U_CALLBACK_CONTINUE ;
}
/**
* main function
*/
int main ( void ) {
struct _u_instance instance ;
// Initialize instance with the port number
if ( ulfius_init_instance ( & instance , PORT , NULL , NULL ) != U_OK ) {
fprintf ( stderr , "Error ulfius_init_instance, abortn" );
return ( 1 );
}
// Endpoint list declaration
ulfius_add_endpoint_by_val ( & instance , "GET" , "/helloworld" , NULL , 0 , & callback_hello_world , NULL );
// Start the framework
if ( ulfius_start_framework ( & instance ) == U_OK ) {
printf ( "Start framework on port %dn" , instance . port );
// Wait for the user to press on the console to quit the application
getchar ();
} else {
fprintf ( stderr , "Error starting frameworkn" );
}
printf ( "End frameworkn" );
ulfius_stop_framework ( & instance );
ulfius_clean_instance ( & instance );
return 0 ;
}
Cree un servicio web en un hilo separado, el punto final se identifica por su método (por ejemplo: GET
, POST
, PUT
, DELETE
, etc.) y su ruta URL con sus parámetros opcionales (por ejemplo: /api/doc/@id
). El servicio web se ejecuta en una función de devolución de llamada.
Transmita una gran cantidad de datos con una huella de memoria reducida.
Servicio Websocket, el intercambio de mensajes websocket se ejecuta en funciones de devolución de llamada dedicadas.
El cliente http[s] y smtp solicita la ejecución, la respuesta se analiza en una estructura dedicada.
Ejecución de la solicitud de websocket del cliente, el intercambio de mensajes de websocket se ejecuta en funciones de devolución de llamada dedicadas.
Crear una aplicación de servicio websocket
Crear una aplicación cliente websocket
CLI para conectarse a un websocket remoto: uwsc
Consulte el archivo INSTALL.md para obtener detalles de instalación.
Consulte el archivo API.md para obtener detalles sobre la documentación de la API.
Consulte la documentación en línea para obtener un formato doxygen de la documentación de la API.
Hay programas de ejemplo disponibles para comprender las diferentes funcionalidades disponibles; consulte la carpeta example_programs para obtener documentación y códigos fuente de muestra detallados.
Las funciones de devolución de llamada de ejemplo están disponibles en la carpeta example_callbacks. Las funciones de devolución de llamada de ejemplo disponibles son:
Estoy abierto a preguntas y sugerencias, siéntete libre de abrir un problema, una solicitud de extracción o enviarme un correo electrónico si lo deseas.