Rust 튜토리얼 목차

Hello World API

이번 튜토리얼에서는 Rust와 Actix-web을 이용하여 'Hello World' 메시지를 출력하는 기본적인 웹 서버를 만들어 보겠습니다.

시작하기

첫 단계로, 새로운 binary 기반의 Cargo 프로젝트를 생성합니다:

cargo new hello-world
cd hello-world

그 후, 프로젝트에 actix-web을 의존성으로 추가해야 합니다.

이를 위해 Cargo.toml 파일을 열고 다음과 같이 입력합니다:

[dependencies]
actix-web = "4"

핸들러 작성하기

웹 서버에서 요청을 처리하기 위해 핸들러 함수를 작성합니다.

이 함수들은 비동기 함수로, 필요한 매개변수를 받아 HttpResponse를 반환합니다.

이 HttpResponse는 웹 서버가 클라이언트에게 보낼 응답입니다.

src/main.rs 파일을 다음과 같이 수정합니다:

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

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

#[post("/echo")]
async fn echo(req_body: String) -> impl Responder {
    HttpResponse::Ok().body(req_body)
}

async fn manual_hello() -> impl Responder {
    HttpResponse::Ok().body("Hey there!")
}

각 핸들러는 HTTP 메소드와 경로에 따라 요청을 처리합니다.

수동으로 경로를 설정하고 싶다면, 그에 맞는 함수를 작성하면 됩니다.

App 생성 및 요청 핸들러 등록

다음 단계로, App 인스턴스를 생성하고 요청 핸들러를 등록합니다.

경로 정보가 있는 핸들러는 App::service를 사용하고, 수동으로 경로를 설정한 핸들러는 App::route를 사용합니다.

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

서버 실행

이제 cargo run 명령어를 통해 프로그램을 컴파일하고 실행할 수 있습니다.

웹 브라우저에서 http://127.0.0.1:8080/ 주소로 접속하면 'Hello World' 메시지를 확인할 수 있습니다.

이 간단한 예제를 통해 Rust와 Actix-web을 이용하여 웹 서버를 어떻게 만드는지 배웠습니다.

이러한 기본 원리를 이용하면 다양한 웹 서비스를 만들어볼 수 있습니다.

Rust Tutorial