Beegoフレームワークでアプリ開発 ~チュートリアル1~

前回は、Beegoの開発環境を構築しました。

今回からアプリケーションの開発をしていきましょう。

学習記事

Controllerの作成

Beegoは、MVCタイプのフレームワークです。

MVCとは、Model(M), View(V), Controller(C)の略で、アプリケーションを実装するためのデザインパターンの一つです。

このMVCの中で、最初に作成するべきは、Controllerです。

Controllerは、ユーザーからの入力情報を受け取って、ModelやViewに処理を振り分ける役目を持っています。

以下のファイルを作成してください。

Controllerは、次の3つの手順で作成します。

Controller作成手順 ① Controllerを登録
② 何らかの処理
③ 処理結果を返却

尚、今回は、②については省略します。

上記のコードは、Studentデータを作成して、GetStudentsで返却しています。

データベースを用意すれば、Studentデータをデータベースに格納するのもありですね(今回はやりませんが)。

エンドポイントの作成

続いて、エンドポイントを作成します。

エンドポイントとは、ユーザーのアクセスを最初に受け取る場所です。

ユーザーアクセス -> エンドポイント -> Controller の順にアクセスするイメージですね。

エンドポイントを書く場所は、app/routers/router.goです。

「localhost:8080/students」でアクセスするとデータを取得できるようにしました。

beego.Routerの第一引数には、「アクセスしたいURL」を指定します(ここでは、students)。

第二引数には、「登録したController」を、第三引数には、「HTTPメソッド名:関数名」を指定します。

HTTPメソッドには、GET, PUT, POST, DELETEなどがあり、今回はGETメソッドを利用しています。

「localhost:8080/students」にブラウザからアクセスしてみましょう。

curlでもOKです。

Viewの作成

続いて、Viewを作成しましょう。

最初にテンプレートファイルを作成してください。

Beegoのテンプレートファイルは、「.tpl拡張子」で作成します。

このファイルには、リクエストの処理結果をはめ込んで、呼び出し元に返却します。

詳しくは、ここを参考にしてください。

Studentの情報を返却できるようにしましょう。

このテンプレートファイルを使用するには、Contorllerに明示的に指定する必要があります。

firstcontroller.goに以下の関数を追加してください。

this.Dataに、テンプレートに当て込む変数「students」を指定するとテンプレート側で設定した「.students」で処理できるようになります。

また、TplNameには、テンプレートファイル名を指定します。

最後に、router.goにこの関数へのパスを書きましょう。

「localhost:8080/dashboard」にアクセスしてみましょう。

redisの導入

redisを導入して、セッション管理をしてみましょう。

docker-compose.ymlを修正します。

続いて、Dockerファイルに次のモジュールを追加してください。

dockerコンテナを「Ctrl+c」止めて、ビルドをしてください。

controllersディレクトリに新しいファイルを作成します。

セッション管理と言えば、ログイン・ログアウトを実装してみましょう。

SetSession関数で、セッションに任意のプロパティで値を登録できます。

Home関数を呼び出すときは、このプロパティを最初にチェックすることで、ログインの有無を判断します。

次は、routerへマッピング処理を追加します。

続いて、app/main.goにredisの設定を追加します。

SessionProviderConfigには、redisコンテナを指定してます。

一旦、Ctrl + c でコンテナを止めて、コンテナを立ち上げなおしてみましょう。

以下の順序でログインしてみましょう。

http://localhost:8080/home

http://localhost:8080/login

http://localhost:8080/home

http://localhost:8080/logout

ログ出力

コンソールにログ出力する機能を実装しましょう。

Dockerファイルに下記のモジュールを追加してください。

コンテナを止めて、ビルドしなおしてください。

次のディレクトリとファイルを作成してください。

filter.goにログ出力機能を実装します。

routerにこのLogManagerをマッピングします(だんだん慣れてきたでしょうか?)。

/*は、「なんでも」の意味です。

/, /home, /login/ logout/とアクセスした種類にかかわらず、コンソール上にログが出力されます。

動作確認をしてみましょう。

dockerコンテナのコンソールを確認してみると、次のログが出力されています。

本日は、ここまでにしておきましょう。

次回

次回もアプリケーション作成の続きをやっていきましょう。

コメントを残す