1. HOME
  2. ブログ
  3. IT技術
  4. 【Controller編】最速のC++ Webフレームワーク「Drogon」を試してみた!

【Controller編】最速のC++ Webフレームワーク「Drogon」を試してみた!

Controller 編~最速のC++ Web フレームワーク「Drogon」を試してみる~

最速の Web フレームワークとして注目を集めている「Drogon」。

前回は、Drogon のインストールと動作確認を行いましたが、実用的な使い方までは紹介しきれませんでした。

Drogon のコントローラについて学ぼう

今回は、Drogon の「Controller (コントローラ)」について見ていきます。

コントローラは、Web フレームワークの心臓部と言っても過言ではない超重要ポイントです。

この記事で、しっかり理解しておきましょう!

Controller とは?

「コントローラ」は、URL リクエストを解析し、どういった処理をするか決定する Web アプリケーションのコアです。

前回は、Drogon がサポートしている Controller の中で、最もシンプルな HttpSimpleController の紹介をしました。

実用的なコントローラ「HttpController」

今回は、皆さんにも馴染みのある、実用的なコントローラを紹介していきます。

今回紹介する HttpController クラスは、URL パラメータなどを捌くためのコントローラです。

HttpController の生成

drogon_ctl コマンドで、同じように生成します。

通常のコントローラ生成コマンドは -h オプションをつけた、以下のような構文で生成します。

名前空間はなくても構いませんが、管理のしやすさと名前衝突を避けるために、何かしら定めた方が良いでしょう。

Drogon の名前空間は URL にも反映される

また、Drogon では、名前空間がそのまま URL にも反映されます。

今回は公式ドキュメントに倣って、controller ディレクトリで以下のように作成しました。

これで、今から作成するコントローラは全て「/demo/v1/user/{ルーティングしたパス}」というURLで処理されるようになります。

ファイル生成

コマンドを実行すると、「demo_v1_User」という名前の.h ファイル、.cc ファイルが生成されます。

モデル作成に見えるけど…

HttpSimpleController とは、やや形式が異なっていますね。

User というモデルを作っているように見えるかもしれませんが、これは単なるコントローラなので、User モデルは生成されません。

URL によって表示を変える

ここからは、Drogon の公式ドキュメントでは分かりにくい箇所を解説していきます。

まずは、「/info/{userId}」でユーザ ID と名前を JSON で返す処理を実装してみましょう!

ヘッダーファイルに宣言を記述

まずは、ヘッダーファイルに宣言を書きます。

ソースファイルに処理を記述

続いて、処理をソースファイルに書いていきます。

動作確認

試しに、「http://localhost/demo/v1/user/info/12345」にアクセスしてみると、

と返ってくるはずです。

コンソール表示も確認

さらにはコンソールでは、デバッグ用の出力で、

のように表示されているはずです。

Drogon のデバッグ出力は C++ 標準出力と同じ

C++では、標準出力を std::cout << "Hello" << std::endl; のように記述します。

Drogon のデバッグ出力も同じような実装をしており、普段 C++を使っている人なら難なく扱えると思います。

GET パラメータ処理も同じ

例えば「/info?userId={xxx}」のような URL も、同様に処理ができます。

のようにするだけです。

URL パラメータの記法

先ほどの例では、全て {1}, {2} といった書き方をしていましたが、他にもちょっとした決まりがあります。

  1. {} : 通常のパラメータマッピング。
  2. {1}, {2}  : パラメータの番号付。
  3. {anything} : {} と同じ。可読性向上のために何かしら文字列を入れることができる。
  4. {1:anything}, {2:xxx} : {1}, {2} と同じ。可読性向上のためのもの。

公式では、3番目と4番目の記法が推奨されています。

これらのことを踏まえると、以下の URL クエリは全て同義であることが分かりますね。

  1. “/users/{}/books/{}”
  2. “/users/{}/books/{2}”
  3. “/users/{user_id}/books/{book_id}”
  4. “/users/{1:user_id}/books/{2}”

Drogon の便利な機能「URL 正規表現」

Drogon のコントローラでは、他にも多くの便利な機能が提供されています。

今回は、「URL 正規表現」についてご紹介します。

Multiple Path Mapping

以下のようなルーティングであれば、様々な URL リクエストを1つのコントローラに集約させることができます。

Regular Expression (Regex: 正規表現)

もっと細かく指定する場合は、「正規表現」を使いましょう。

これを上手く使えば、全ての URL を漏れなくユーザに提供できるようになります。

ただし、くれぐれも競合しないよう注意して下さい。

View 編へつづく!

今回は、Drogon のコントローラの扱いについて簡単に紹介しました。

これで、シンプルな WebAPI であれば作成できそうですね。

次回は、「Web アプリケーションの View の扱い」について解説していきます!

(株)ライトコードは、WEB・アプリ・ゲーム開発に強い「好きを仕事にするエンジニア集団」です。
システム開発依頼・お見積もりはこちらまでお願いします。
また、WEB・アプリエンジニアを積極採用中です!詳しくはこちらをご覧ください。

※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

View 編はこちら!

こちらの記事もオススメ!



ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

書いた人はこんな人

ライトコードメディア編集部
ライトコードメディア編集部
「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。

関連記事