إطار عمل HTTP لتطبيقات REST في C.
استنادًا إلى GNU Libmicrohttpd لخادم الويب الخلفي، وJansson لمكتبة معالجة json، وLibcurl لواجهة برمجة تطبيقات العميل http/smtp.
يستخدم لتسهيل إنشاء تطبيقات الويب في برامج C ذات مساحة ذاكرة صغيرة، كما هو الحال في تطبيقات الأنظمة المدمجة.
يمكنك إنشاء خدمات ويب في وضع HTTP أو HTTPS، أو دفق البيانات، أو تنفيذ مقابس الويب الخاصة بالخادم.
الكود المصدري لـ helloworld باستخدام 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 للاتصال بمقبس ويب بعيد: uwsc
راجع ملف INSTALL.md للحصول على تفاصيل التثبيت
راجع ملف API.md للحصول على تفاصيل وثائق API
راجع الوثائق عبر الإنترنت للحصول على تنسيق doxygen لوثائق API.
تتوفر أمثلة للبرامج لفهم الوظائف المختلفة المتاحة، راجع مجلد example_programs للحصول على نماذج تفصيلية لأكواد المصدر والوثائق.
تتوفر أمثلة لوظائف رد الاتصال في المجلد example_callbacks. أمثلة وظائف رد الاتصال المتاحة هي:
أنا منفتح للأسئلة والاقتراحات، فلا تتردد في فتح مشكلة أو طلب سحب أو إرسال بريد إلكتروني إليّ إذا كنت ترغب في ذلك!