Rust 언어 기반의 웹 프레임워크 Actix

 

[참조] https://blog.naver.com/shino1025/223076390730

 

이 글은 참조 링크에 있는 글을 정리한 것입니다. 

 

액틱스 웹은 액틱스라는 라이브러리를 기반으로 만들어진 웹 프레임워크이다.

웹프레임워크 벤치마크에서 최상위권 속한다.

성능도 좋지만 actix는 유틸/편의성을 많이 신경썼다고 합니다.

Type Safe

러스트 언어를 사용하기에 가능하다. 리퀘스트에 대한 Validation도 잘 풀어냈다.

Feature Rich

현대 웹 프레임워크 지원 기능을 다소 지원한다.

멀티스레딩, Fully Async, HTTP/2, Logging, Request/Response Compression, Auto-Reloading 등.

(최상위 웹 프레임워크에 비하면 다소 부족)

Extensible

주로 Middleware를 언급하는 것으로 보임. 제공된 Middleware도 있고 커스텀 미들웨어를 작성할 수 있다.

Get Started

"Hello world!"를 루트에서 출력하는 간단한 actix-web 예제 코드

use actix_web::{get, App, HttpResponse, HttpServer, Responder};

#[get("/")]
async fn hello() -> impl Responder {
    HttpResponse::Ok().body("Hello world!")
}

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| {
        App::new()
            .service(hello)
    })
    .bind(("127.0.0.1", 8080))?
    .run()
    .await
}

 

async fn main()

Actix Web 프레임워크의 메인 함수로 사용된다. (actix를 설치 시 tokio도 설치되는데 이를 통해 모든 함수에서 async programming이 가능해지는 것 같다.)

HttpServer 및 App 인스턴스를 생성하여 웹 서버를 실행하는 것을 알 수 있다.

bind() 메소드를 통해 127.0.0.1에 한정하여 8080 포트에 서버를 열고 웹 서버를 실행.

HttpServer::new에서는 어플리케이션이 초기화될 때, 전처리 작업을 실행시켜 줄 수 있다. 마지막에는 App 객체를 return 해야 한다!

async fn hello()

actix_web::get attribute를 통해 해당 함수를 Root URL("/")의 Route Function으로 지정.

Response Type을 명시하는 것이 아닌, "impl Responder" 명시할 수 있는데 즉, Responder라는 impl이 구현된 무언가를 대충  알려줌. 단, 이 부분의 Reponse Type이 컴파일 타임에서 결정됨에 주의.

Extractor

액틱스는 Router 부분, 사용자 요청이나 Application의 Global State 접근하는 것을 Extractor(익스트랙터)라 부른다.

아래 문서에 들어가면 리퀘스트나 State에 대한 접근/추출 예제 제공됨.

Application Test

Cargo에서 지원하는 테스트 프레임워크를 사용할 수 있도록 actix에서 지원한다. 

 

Actix Application 구조화

Actix는 구조화가 자유롭다.

다른 개발자의 Actix 구조화를 대해 모아 놓은 링크는 아래와 같다.

 

 

 

반응형

'Actix WEB (Rust)' 카테고리의 다른 글

Actix 공식 사이트  (0) 2025.01.31

+ Recent posts