HTTP Framework для приложений REST на C.
На основе GNU Libmicrohttpd для внутреннего веб-сервера, Jansson для библиотеки манипуляций json и Libcurl для клиентского API http/smtp.
Используется для облегчения создания веб-приложений в программах на языке C с небольшим объемом памяти, например, во встроенных системных приложениях.
Вы можете создавать веб-сервисы в режиме HTTP или HTTPS, осуществлять потоковую передачу данных или реализовывать серверные веб-сокеты.
Исходный код hello world с использованием Ulfius следующий:
/**
* 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 ;
}
Создайте веб-сервис в отдельном потоке, конечная точка идентифицируется по его методу (например: GET
, POST
, PUT
, DELETE
и т. д.) и URL-пути с необязательными параметрами (например: /api/doc/@id
). Веб-сервис выполняется в функции обратного вызова.
Передавайте большие объемы данных в потоковом режиме с меньшим объемом памяти.
Служба Websocket, обмен сообщениями через веб-сокет выполняется в специальных функциях обратного вызова.
Выполнение клиентских http[s] и smtp запросов, ответ анализируется в выделенной структуре.
Выполнение клиентского запроса веб-сокета, обмен сообщениями веб-сокета выполняется в специальных функциях обратного вызова.
Создание приложения службы веб-сокетов
Создание клиентского приложения веб-сокета
CLI для подключения к удаленному веб-сокету: uwsc
Подробности установки см. в файле INSTALL.md.
Подробности документации API см. в файле API.md.
См. онлайн-документацию в формате doxygen документации API.
Для понимания различных доступных функций доступны примеры программ. Подробные примеры исходных кодов и документации см. в папке example_programs.
Примеры функций обратного вызова доступны в папке example_callbacks. Доступны примеры функций обратного вызова:
Я открыт для вопросов и предложений, не стесняйтесь открывать проблему, делать запросы на включение или отправляйте мне электронное письмо, если вам так хочется!