HTTP Framework สำหรับแอปพลิเคชัน REST ใน C.
อิงตาม GNU Libmicrohttpd สำหรับเว็บเซิร์ฟเวอร์แบ็กเอนด์, Jansson สำหรับไลบรารีการจัดการ json และ Libcurl สำหรับ API ไคลเอ็นต์ http/smtp
ใช้เพื่ออำนวยความสะดวกในการสร้างเว็บแอปพลิเคชันในโปรแกรม C ที่มีหน่วยความจำขนาดเล็ก เช่นเดียวกับในแอปพลิเคชันระบบฝังตัว
คุณสามารถสร้างบริการเว็บในโหมด HTTP หรือ HTTPS สตรีมข้อมูล หรือใช้เว็บซ็อกเก็ตของเซิร์ฟเวอร์ได้
ซอร์สโค้ดของสวัสดีชาวโลกที่ใช้ 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 การแลกเปลี่ยนข้อความ websocket ดำเนินการในฟังก์ชันการโทรกลับเฉพาะ
ไคลเอ็นต์ http[s] และ smtp ร้องขอการดำเนินการ การตอบสนองจะถูกแยกวิเคราะห์ในโครงสร้างเฉพาะ
การดำเนินการร้องขอ websocket ของลูกค้า การแลกเปลี่ยนข้อความ websocket จะดำเนินการในฟังก์ชันการโทรกลับเฉพาะ
สร้างแอปพลิเคชันบริการ websocket
สร้างแอปพลิเคชันไคลเอนต์ websocket
CLI เพื่อเชื่อมต่อกับ websocket ระยะไกล: uwsc
ดูไฟล์ INSTALL.md สำหรับรายละเอียดการติดตั้ง
ดูไฟล์ API.md สำหรับรายละเอียดเอกสารประกอบ API
ดูเอกสารประกอบออนไลน์สำหรับรูปแบบ doxygen ของเอกสารประกอบ API
มีโปรแกรมตัวอย่างเพื่อทำความเข้าใจฟังก์ชันการทำงานต่างๆ ที่มีอยู่ โปรดดูโฟลเดอร์ example_programs สำหรับตัวอย่างซอร์สโค้ดและเอกสารประกอบโดยละเอียด
ตัวอย่างฟังก์ชันการโทรกลับมีอยู่ในโฟลเดอร์ example_callbacks ตัวอย่างฟังก์ชันการโทรกลับที่ใช้ได้ ได้แก่:
ฉันเปิดรับคำถามและข้อเสนอแนะ อย่าลังเลที่จะเปิดประเด็น ดึงคำขอ หรือส่งอีเมลถึงฉันหากคุณรู้สึกเช่นนั้น!