C 语言 REST 应用程序的 HTTP 框架。
基于用于后端 Web 服务器的 GNU Libmicrohttpd、用于 json 操作库的 Jansson 以及用于 http/smtp 客户端 API 的 Libcurl。
用于促进在内存占用较小的 C 程序中创建 Web 应用程序,如嵌入式系统应用程序。
您可以在 HTTP 或 HTTPS 模式下创建 Web 服务、流数据或实现服务器 Websocket。
使用Ulfius的hello world的源代码如下:
/**
* 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 ;
}
在单独的线程中创建一个 Web 服务,端点由其方法(例如: GET
、 POST
、 PUT
、 DELETE
等)及其 URL 路径及其可选参数(例如: /api/doc/@id
)标识。 Web 服务在回调函数中执行。
以减少的内存占用量传输大量数据。
Websocket 服务,websocket 消息交换在专用回调函数中执行。
客户端http[s]和smtp请求执行,响应以专用结构解析。
客户端websocket请求执行,websocket消息交换在专用回调函数中执行。
创建一个websocket服务应用程序
创建 websocket 客户端应用程序
用于连接到远程 Websocket 的 CLI:uwsc
有关安装详细信息,请参阅 INSTALL.md 文件
有关 API 文档详细信息,请参阅 API.md 文件
请参阅在线文档,了解 doxygen 格式的 API 文档。
示例程序可用于了解可用的不同功能,请参阅 example_programs 文件夹以获取详细的示例源代码和文档。
示例回调函数可在文件夹 example_callbacks 中找到。可用的示例回调函数有:
我愿意接受问题和建议,如果您愿意,请随时提出问题、拉取请求或给我发送电子邮件!