サーチ…


前書き

Ironは、 ミドルウェアによる拡張性の考え方を促進する、低レベルのHyperライブラリに基づくRustの一般的なWebフレームワークです 。有用なWebサイトを作成するために必要な機能の多くは、ライブラリ自体ではなく、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サーバーを作成するときは、より詳細なエラーメッセージでエラーをキャッチするexpectexpectしてください。プロダクションアプリケーションでは、生成されたエラーを処理しますhttp()マニュアルを参照)。

鉄のインストール

この依存関係をCargo.tomlファイルに追加します。

[dependencies]
iron = "0.4.0"

cargo buildを実行cargo buildと、CargoはIronの指定バージョンをダウンロードしてインストールします。

アイロンによるシンプルなルーティング

この例では、Ironを使用した基本的なWebルーティングを提供します。

まず、 Cargo.tomlファイルにIron依存関係を追加する必要があります。

[dependencies]
iron = "0.4.*"

Ironの独自のRouterライブラリを使用します。簡単にするため、IronプロジェクトはこのライブラリをIron coreライブラリの一部として提供し、別の依存関係として追加する必要はありません。次に、IronライブラリとRouterライブラリの両方を参照します。

extern crate iron;
extern crate router;

次に、必要なオブジェクトをインポートして、ルーティングを管理し、ユーザーに応答を返します。

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

この例では、 main()関数内にルーティングロジックを記述することで簡単にします。もちろん、アプリケーションが大きくなるにつれて、ルーティング、ロギング、セキュリティ上の問題、およびWebアプリケーションの他の領域を分離する必要があります。今のところ、これは良い出発点です。

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

これまで達成してきたことを考えてみましょう。私たちのプログラムは現在、新しいIron Routerオブジェクトをインスタンス化し、2つのタイプのURLリクエストに2つの "ハンドラ"を添付します。最初の( "/" )はドメインのルートで、2番目の( "/:query" )は任意のパス根の下にある。

単語 "query"の前にセミコロンを使用することで、IronにURLパスのこの部分を変数として渡し、ハンドラに渡すように指示します。

次のコード行は、URLリクエストを管理する独自のrouterオブジェクトを指定して、Ironをインスタンス化する方法です。ドメインとポートは、この例では単純化のためにハードコードされています。

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

次に、ハンドラ、 handler 、およびquery_handler 2つのインライン関数を宣言します。これらはどちらも固定URLと可変URLを示すために使用されます。

2番目の関数では、リクエストオブジェクトが保持する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)))
    }
}

この例を実行すると、結果はWebブラウザのlocalhost:3000表示されます。ドメインのルートは"OK"で応答する必要があり、ルートの下のものはパスを戻す必要があります。

この例の次のステップは、ルーティングの分離と静的ページの提供です。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow