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 |
---|