Go言語とVue.jsで作るユーザー認証アプリ~バックエンド開発編Vol1~

こんにちは。KOUKIです。

前回に引き続き、ユーザー認証アプリの実装を行います。本記事は、主にバックエンドで以下の処理について書きます。

1. Fiber フレームワークの導入
2. MySQLの接続
3. パッケージ化
4. マイグレーション

前回

FiberでWebサーバーを導入

今回は、Webフレームワークに「Fiber」を使ってみようと思います。仕事では、「Gin」を使っていますが、違うものを使ってみたく..

Installは以下のコマンドを使いますが、「go mod」を導入しているので自動でインストールされるはずです。

main.goに、次の処理を実装します。

これで、Webサーバーが立ち上がります。

コンテナを立ち上げていない場合は、以下のコマンドで立ち上げましょう。

「http://localhost/」にブラウザからアクセスします。

OKですね。

補足: ホットリロードについて

設定を反映させるために通常なら「Ctrl + c」でコンテナを停止させなければいけませんが、動作環境がMac(or Linux)の場合は、ホットリロードが走ります。これは、Dockerに設定した「reflex」の機能です。ちなみにWindowsだとホットリロードされません^^;

MySQL接続

次は、MySQLに接続する処理を実装します。

MySQLに接続するために、GORMを使用しています。これを使うとDBの接続やSQL発行などをGo言語で実装できるようになるのでオススメです。

接続に成功すると、以下のようにコンソールに出力されます。

パッケージ化

機能の役割に応じて、パッケージ化してみましょう。

database

databaseパッケージには、MySQLへの接続処理を実装します。

routers

routersには、エンドポイントを定義しましょう。

controllers

controllersには、リクエスト先の処理を実装します。

この例のように、controllersを用途によって分けるのはベストプラクティスです。メンテが楽になります。

main.go

main関数から先ほど実装した関数を呼びだします。

routersに、「”/”」と「”/other”」のエンドポイントを設定したので、それぞれアクセスしてみましょう。

OKですね。

モデルの定義

次は、モデルを定義しましょう。

これは、API通信やDBに格納するデータの元になる定義です。

Register関数を以下のように編集します。

c.JSON(user)は、GoのデータをJSON形式で呼び出し元に返す便利メソッドです。

また、Setup関数も変更します。

これで、「http://localhost/api/register」にPOSTでリクエストを送信すれば、userデータが取得できます。

Talend API Testerで確認してみましょう。

OKですね。無事にデータが取得できました。

マイグレーション

次は、マイグレーションを試します。

GORMのAutoMigrateメソッドを実行するとマイグレーションを実行できます。その結果、データベースのスキーマーが作成されるはずです。

これで、Userモデルからスキーマーを作成しました。

「http://localhost:8888/tbl_structure.php?server=1&db=go_auth&table=users」にアクセスしてみてください。

Userに紐づくスキーマーが作成されたことがわかります。

スキーマーに条件を付けたい場合は、User StructにGORMのプレフィックスを付けます。

Emailをユニーク条件にしました。この変更も即座に反映されます。※Windowsの場合は、reflexが効かないのでコンテナを立ち上げ直してください

gormには、gorm.Modelという構造体があります。これは便利なので追加しておきましょう。

こうなります。

便利ですね。

次回

次回も引き続き、バックエンド開発を行っていきます。

Go記事まとめ

コメントを残す