複数のパスを使う場合

ソース

1import jp.ku6.raptan.core;
2
3void main()
4{
5    // リクエストの処理
6    // 今回の場合、http://hogehoge/tutorial2/1.htmlに
7    // アクセスされた時この関数が実行されます
8    string action1(Request request, Response response)
9    {
10        // Content-Typeを設定
11        response.contentType = "text/html; charset=UTF-8";
12
13        // 出力するデータを追加
14        response.append("action1");
15
16        // 内部リダイレクトを使わない場合はnullを返す
17        return null;
18    }
19
20    // リクエストの処理
21    // 今回の場合、http://hogehoge/tutorial2/2.htmlに
22    // アクセスされた時この関数が実行されます
23    string action2(Request request, Response response)
24    {
25        // Content-Typeを設定
26        response.contentType = "text/html; charset=UTF-8";
27
28        // 出力するデータを追加
29        response.append("action2");
30
31        // 内部リダイレクトを使わない場合はnullを返す
32        return null;
33    }
34
35    // Raptan生成
36    auto raptan = new Raptan(8192, 0, "/tmp/uploaded/");
37
38    // リクエストのパスに対して実行するdelegateを割り当てる
39    // 今回の場合、/tutorial2/1.htmlまたは/tutorial2/2.htmlにアクセスされた時に、
40    // このプログラムをコンパイルしたfcgiファイルに処理が渡るようWebサーバを設定する。
41    // 例えば、Apacheならばmod_rewriteを使い下記の様に記述する
42    // RewriteRule ^/tutorial2/(1|2)\.html /var/www/fastcgi/tutorial2.fcgi
43    raptan.setAction("/tutorial2/1.html", &action1);
44    raptan.setAction("/tutorial2/2.html", &action2);
45
46    // スレッドを作成して処理を開始
47    raptan.start();
48
49    // スレッド終了を待機
50    raptan.join();
51}

実行結果

上記をコンパイルし、CGIとしてアクセスすると下記が表示されます。

/tutorial2/1.htmlにアクセスした場合

action1

/tutorial2/2.htmlにアクセスした場合

action2