Kerangka HTTP untuk Aplikasi REST di C.
Berdasarkan GNU Libmicrohttpd untuk server web backend, Jansson untuk perpustakaan manipulasi json, dan Libcurl untuk API klien http/smtp.
Digunakan untuk memfasilitasi pembuatan aplikasi web dalam program C dengan jejak memori kecil, seperti pada aplikasi sistem tertanam.
Anda dapat membuat layanan web dalam mode HTTP atau HTTPS, mengalirkan data, atau mengimplementasikan soket web server.
Kode sumber hello world menggunakan Ulfius adalah sebagai berikut:
/**
* 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 ;
}
Buat layanan web di thread terpisah, titik akhir diidentifikasi berdasarkan metodenya (misal: GET
, POST
, PUT
, DELETE
, dll.) dan jalur URL-nya dengan parameter opsionalnya (misal: /api/doc/@id
). Layanan web dijalankan dalam fungsi panggilan balik.
Streaming data dalam jumlah besar dengan pengurangan jejak memori.
Layanan websocket, pertukaran pesan websocket dijalankan dalam fungsi panggilan balik khusus.
Klien http[s] dan smtp meminta eksekusi, responsnya diurai dalam struktur khusus.
Eksekusi permintaan websocket klien, pertukaran pesan websocket dijalankan dalam fungsi panggilan balik khusus.
Buat aplikasi layanan websocket
Buat aplikasi klien websocket
CLI untuk terhubung ke soket web jarak jauh: uwsc
Lihat file INSTALL.md untuk detail instalasi
Lihat file API.md untuk detail dokumentasi API
Lihat dokumentasi online untuk format doxygen dari dokumentasi API.
Contoh program tersedia untuk memahami berbagai fungsi yang tersedia, lihat folder example_programs untuk contoh kode sumber dan dokumentasi terperinci.
Contoh fungsi panggilan balik tersedia di folder example_callbacks. Contoh fungsi panggilan balik yang tersedia adalah:
Saya terbuka untuk pertanyaan dan saran, jangan ragu untuk membuka terbitan, permintaan penarikan, atau kirimi saya email jika Anda menginginkannya!