ウェブサーバ

Vibe.dはHTTP(S)ウェブサーバを一瞬のうちに書くことを可能にします:

auto settings = new HTTPServerSettings;
settings.port = 8080;
listenHTTP(settings, &foo);

これはすべてのリクエストがfoo関数によりハンドルされるウェブサーバをポート8080で開始します:

void foo(HTTPServerRequest req,
    HTTPServerResponse res) { ... }

典型的な使用パターンと、異なるパスの設定を簡単にするために、 URLRouterクラスはGETPOSTなどを登録できる.get("path", handler).post("path", handler)メンバ関数を使う、 またはメンバ関数としてウェブサーバーパスを実装したカスタムウェブインターフェース クラスを登録するハンドラを提供します:

auto router = new URLRouter;
router.registerWebInterface(new WebService);
listenHTTP(settings, router);

カスタムウェブインターフェースWebService のメンバ関数のパスはシンプルな仕組みを用いて自動的に決定されます:

  • index()/indexにハンドルされます
  • getName()GETリクエスト/nameにハンドルされます
  • postUsername()/usernameへのPOSTリクエストにハンドルされます

メンバ関数に@path("/hello/world") 属性を属性付けすることによってカスタムパスを設定できます。 POSTリクエストのパラメータは_プレフィックスのついた変数名を使い、 関数で利用できるようになります。そのパスから直接パラメータを明記することもできます:

@path("/my/api/:id")
void foo(int _id)

各関数にパラメータとしてHTTPServerResponseHTTPServerRequestを渡す必要はありません。 Vibe.dはそれが関数のパラメータリストにあるかどうか静的にチェックし、必要なら渡します。

rdmd playground.d