<<<<<<< HEAD
開発環境をdocker-composeで構築しています。
- Go
- docker / docker-compose
docker compose up -d
docker compose down
# ログの確認
docker compose logs
# ストリーミング
docker compose logs -f
# webサーバonly
docker compose logs web
docker compose logs -f web
airによるホットリロードをサポートしており、コードを編集・保存すると自動で反映されます。
読み込まれない場合はdocker compose restart
を実行してください。
API仕様をSwagger UIで確認できます。
開発環境を立ち上げ、Webブラウザでlocalhost:8081にアクセスしてください。
各API定義の"Try it out"からAPIの動作確認を行うことができます。
鍵マークのついたエンドポイントは認証付きエンドポイントです。
Authentication
というHTTPヘッダにusername ${ユーザー名}
を指定する単純な仕様です。
動作確認の際には画面上部の"Authorize"からヘッダの値の設定を行ってください。
マイグレーションツールの用意はありません。
初回起動時にddl/
以下にあるSQLファイルが実行されます。
再読み込みの際は.data/mysql/
を削除し、DBを初期化してください。
docker compose down # 開発環境が稼働中なら止める
rm -rfd .data/mysql # `.data/mysql/`以下を削除
docker compose up -d # 再起動
.
├── app ----> application core codes
│ ├── config ----> config
│ ├── domain ----> domain layer, core business logics
│ ├── handler ----> (interface layer & application layer), request handlers
│ └── dao ----> (infrastructure layer), implementation of domain/repository
│
└── ddl ----> DB definition master
サーバーの設定をまとめたパッケージです。DBやlistenするポートなどの設定を取得するAPIがまとめてあります。
アプリケーションのモデルを扱うdomain層のパッケージです。
ドメインに登場するデータ・モノの表現やその振る舞いを記述するパッケージです。 今回は簡単のためDTOの役割も兼ねています。
domain/objectで扱うEntityの永続化に関する処理を抽象化し、インターフェースとして定義するパッケージです。 具体的な実装はdaoパッケージで行います。
HTTPリクエストのハンドラを実装するパッケージです。 リクエストからパラメータを読み取り、エンドポイントに応じた処理を行ってレスポンスを返します。 機能の提供のために必要になる各種処理の実装は別のパッケージに切り分け、handlerは入出力に注力するケースも多いですが、今回は簡単のため統合しています。
domain/repositoryに対する実装を提供するパッケージです。 DBなど外部モジュールへアクセスし、データの保存・取得・更新などの処理を実装します。
このテンプレートでは実装をサポートするユーティリティ関数を提供しています。
認証付きエンドポイントの実装のためのミドルウェア関数を提供しています。
chi.Mux#Use
やchi.Mux#With
を用いて利用できます。
ミドルウェアを埋め込んだエンドポイントでは*http.Request
からAccountOf
でリクエストと紐づくアカウントを取得できます。
// var r *http.Request
account := auth.AccountOf(r)
=======
origin/main