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 中找到。可用的範例回調函數有:
我願意接受問題和建議,如果您願意,請隨時提出問題、拉取請求或給我發送電子郵件!