golang製 REST API ボイラーテンプレート
- mysql: 8.0.28
- go: 1.19.2
- net/http
- gorm
- sql-migrate
- gorilla/sessions
- github actions
TODOリストAPI
- 認証機能は UserId をセッションに保存
| メソッド | URI | 認証有無 | |
|---|---|---|---|
| - | GET | / | なし |
| メソッド | URI | 認証有無 | クエリ | リクエストボディ | |
|---|---|---|---|---|---|
| ログイン | POST | /auth/sign_in/ | なし | AuthSignInRequestDto | |
| 会員登録 | POST | /auth/sign_up/ | なし | AuthSignUpRequestDto |
| メソッド | URI | 認証有無 | クエリ | リクエストボディ | |
|---|---|---|---|---|---|
| ログインユーザー情報取得 | GET | /auth/user/ | あり | ||
| ユーザー更新 | PUT | /auth/user/ | あり | AuthUserUpdateRequestDto | |
| ユーザー削除 | DELETE | /auth/user/ | あり |
| メソッド | URI | 認証有無 | クエリ | リクエストボディ | |
|---|---|---|---|---|---|
| ユーザーに紐づく全Todoデータ取得 | GET | /todos/ | あり | ||
| 単一Todoデータ取得 | POST | /todos/id/ | あり | ||
| Todo新規作成 | POST | /todos/ | あり | TodoCreateRequestDto | |
| Todo更新 | PUT | /todos/id/ | あり | TodoCreateRequestDto | |
| Todo削除 | DELETE | /todos/id/ | あり |
| URI | Cors | WriteHeader | Auth | SetHttpContext |
|---|---|---|---|---|
| / | x | x | x | x |
| /toods/*/ | ○ | ○ | ○ | ○ |
| /auth/sign_in/ | ○ | ○ | x | ○ |
| /auth/sign_up/ | ○ | ○ | x | ○ |
| /auth/user/*/ | ○ | ○ | ○ | ○ |
touch .env
下記環境変数をセット
| 変数名 | 説明 |
|---|---|
| GO_MODE | 稼働環境 |
| DB_USER | DBユーザー |
| DB_PASSWORD | DBユーザーパスワード |
| DB_HOST | DBホスト |
| DB_NAME | データベース名 |
| SECRET_HASH_KEY | セッションキー |
| MAIL_AUTH_EMAIL | メール送信アカウントのメールアドレス |
| MAIL_AUTH_PASSWORD | メール送信アカウントのパスワード |
| MAIL_FROM_NAME | メール送信元名 |
| MAIL_FROM_EMAIL | メール送信元のアドレス |
make setup
make start
イメージビルドとDB作成・マイグレーション
DB作成
DBマイグレーション
シードデータ投入
APIスタート(Dockerコンテナ起動)
APIストップ(Dockerコンテナ停止)
Dockerサーバーコンテナに ash で入る
Docker DBコンテナに bash で入る