수색…


소개

Iron미들웨어를 통해 확장성에 대한 아이디어를 촉진하는 Rust ( Hyper -Level 라이브러리 기반)의 유명한 웹 프레임 워크입니다. 유용한 웹 사이트를 만드는 데 필요한 많은 기능은 라이브러리 자체가 아니라 Iron의 미들웨어에서 찾을 수 있습니다.

단순한 'Hello'서버

이 예에서는 서버 요청을 보낼 때 사용자에게 하드 코딩 된 응답을 보냅니다.

extern crate iron;

use iron::prelude::*;
use iron::status;

// You can pass the handler as a function or a closure. In this
// case, we've chosen a function for clarity.
// Since we don't care about the request, we bind it to _.
fn handler(_: &mut Request) -> IronResult<Response> {
    Ok(Response::with((status::Ok, "Hello, Stack Overflow")))
}

fn main() {
    Iron::new(handler).http("localhost:1337").expect("Server failed!")
}

새로운 만들 때 Iron 이 예에서 서버를 expect 보다 설명이 포함 된 오류 메시지와 함께 오류를 잡을 수 있습니다. 프로덕션 응용 프로그램에서는 생성 된 오류를 처리 http() 대한 설명서 참조).

철 설치

이 종속성을 Cargo.toml 파일에 추가하십시오.

[dependencies]
iron = "0.4.0"

cargo build 실행하면 카고가 지정된 버전의 아이언을 다운로드하여 설치합니다.

아이언과의 간단한 라우팅

이 예제는 Iron을 사용하여 기본적인 웹 라우팅을 제공합니다.

Cargo.toml 파일에 Iron 종속성을 추가해야합니다.

[dependencies]
iron = "0.4.*"

Iron의 자체 라우터 라이브러리를 사용합니다. 간단하게하기 위해 Iron 프로젝트는 Iron Core 라이브러리의 일부로이 라이브러리를 제공하므로이를 별도의 종속성으로 추가 할 필요가 없습니다. 다음으로 Iron 라이브러리와 Router 라이브러리를 참조합니다.

extern crate iron;
extern crate router;

그런 다음 필요한 객체를 가져와 우리가 라우팅을 관리하고 사용자에게 응답을 반환 할 수있게합니다.

use iron::{Iron, Request, Response, IronResult};
use iron::status;
use router::{Router};

이 예제에서는 main() 함수 내에서 라우팅 로직을 작성하여 간단하게 유지할 것이다. 물론 애플리케이션이 커지면 라우팅, 로깅, 보안 문제 및 웹 애플리케이션의 다른 영역을 분리해야합니다. 지금은 좋은 출발점입니다.

fn main() {
    let mut router = Router::new();
    router.get("/", handler, "handler");
    router.get("/:query", query_handler, "query_handler");

지금까지 우리가 달성 한 것들을 살펴 보겠습니다. 우리 프로그램은 현재 새로운 Iron Router 객체를 인스턴스화하고 두 가지 유형의 URL 요청에 두 개의 "핸들러"를 첨부합니다. 첫 번째 ( "/" )는 도메인의 루트이고 두 번째 ( "/:query" )는 임의의 경로입니다 뿌리 밑.

"검색어"라는 단어 앞에 세미콜론을 사용하여 Iron에게 URL 경로의이 부분을 변수로 사용하여 처리기에 전달하도록 지시합니다.

다음 코드 행은 URL 요청을 관리하기 위해 자체 router 객체를 지정하여 Iron을 인스턴스화하는 방법입니다. 도메인 및 포트는 단순화를 위해이 예에서 하드 코딩됩니다.

    Iron::new(router).http("localhost:3000").unwrap();

다음으로, 핸들러, handlerquery_handler 인라인 함수 두 개를 선언합니다. 이들은 둘 다 고정 URL과 가변 URL을 보여주기 위해 사용됩니다.

두 번째 함수에서는 요청 객체가 보유한 URL에서 "query" 변수를 취하여 응답으로 사용자에게 다시 보냅니다.

    fn handler(_: &mut Request) -> IronResult<Response> {
        Ok(Response::with((status::Ok, "OK")))
    }

    fn query_handler(req: &mut Request) -> IronResult<Response> {
        let ref query = req.extensions.get::<Router>()
            .unwrap().find("query").unwrap_or("/");
        Ok(Response::with((status::Ok, *query)))
    }
}

이 예제를 실행하면 localhost:3000 의 웹 브라우저에서 결과를 볼 수 있습니다. 도메인의 루트는 "OK" 응답해야하며 루트 아래에있는 경로는 경로를 다시 반복해야합니다.

이 예제의 다음 단계는 라우팅과 정적 페이지 제공을 분리하는 것입니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow