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 ファイルを参照してください。
API ドキュメントの doxygen 形式については、オンライン ドキュメントを参照してください。
使用可能なさまざまな機能を理解するために、サンプル プログラムを利用できます。詳細なサンプル ソース コードとドキュメントについては、example_programs フォルダーを参照してください。
コールバック関数の例は、example_callbacks フォルダーにあります。使用可能なコールバック関数の例は次のとおりです。
ご質問やご提案をお待ちしております。気が向いたら、気軽に問題を作成したり、プルリクエストを作成したり、電子メールを送ってください。