C의 REST 애플리케이션을 위한 HTTP 프레임워크.
백엔드 웹 서버용 GNU Libmicrohttpd, json 조작 라이브러리용 Jansson, http/smtp 클라이언트 API용 Libcurl을 기반으로 합니다.
임베디드 시스템 애플리케이션에서와 같이 메모리 공간이 작은 C 프로그램에서 웹 애플리케이션을 쉽게 생성하는 데 사용됩니다.
HTTP 또는 HTTPS 모드에서 웹 서비스를 생성하거나, 데이터를 스트리밍하거나, 서버 웹 소켓을 구현할 수 있습니다.
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 ;
}
별도의 스레드에서 웹 서비스를 생성합니다. 엔드포인트는 해당 메소드(예: GET
, POST
, PUT
, DELETE
등)와 선택적 매개변수가 있는 URL 경로(예: /api/doc/@id
)로 식별됩니다. 웹 서비스는 콜백 함수에서 실행됩니다.
줄어든 메모리 공간으로 대량의 데이터를 스트리밍합니다.
Websocket 서비스인 Websocket 메시지 교환은 전용 콜백 함수에서 실행됩니다.
클라이언트 http[s] 및 smtp가 실행을 요청하면 응답이 전용 구조로 구문 분석됩니다.
클라이언트 웹소켓 요청 실행, 웹소켓 메시지 교환은 전용 콜백 함수에서 실행됩니다.
웹소켓 서비스 애플리케이션 생성
웹소켓 클라이언트 애플리케이션 생성
원격 웹소켓에 연결하기 위한 CLI: uwsc
설치 세부정보는 INSTALL.md 파일을 참조하세요.
API 문서 세부정보는 API.md 파일을 참조하세요.
API 문서의 doxygen 형식에 대해서는 온라인 문서를 참조하세요.
사용 가능한 다양한 기능을 이해하는 데 예제 프로그램이 제공됩니다. 자세한 샘플 소스 코드 및 문서는 example_programs 폴더를 참조하세요.
예제 콜백 함수는 example_callbacks 폴더에서 사용할 수 있습니다. 사용 가능한 콜백 함수의 예는 다음과 같습니다.
저는 질문과 제안을 받을 준비가 되어 있습니다. 원하시면 언제든지 이슈를 열거나 끌어오기 요청을 하거나 이메일을 보내주세요!