https://github.com/takeruun/go-restapi-boilerplate
net/http で作成したREST API サーバー
https://github.com/takeruun/go-restapi-boilerplate
go gorm mysql net-http session-cookie sql-migrate
Last synced: 29 days ago
JSON representation
net/http で作成したREST API サーバー
- Host: GitHub
- URL: https://github.com/takeruun/go-restapi-boilerplate
- Owner: takeruun
- Created: 2022-10-13T23:24:03.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-12-17T05:40:49.000Z (over 3 years ago)
- Last Synced: 2025-01-29T15:50:45.198Z (over 1 year ago)
- Topics: go, gorm, mysql, net-http, session-cookie, sql-migrate
- Language: Go
- Homepage:
- Size: 86.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# golang REST API boilerplate
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 | / | なし |
### ユーザー認証API
| | メソッド | URI | 認証有無 | クエリ | リクエストボディ |
| - | ------- | --- | ------ | - | - |
| ログイン | POST | /auth/sign_in/ | なし | | [AuthSignInRequestDto](./controller/dto/auth.dto.go#L3) |
| 会員登録 | POST | /auth/sign_up/ | なし | |[AuthSignUpRequestDto](./controller/dto/auth.dto.go#L8) |
### ログインユーザーAPI
| | メソッド | URI | 認証有無 | クエリ | リクエストボディ |
| - | ------- | --- | ------ | - | - |
| ログインユーザー情報取得 | GET | /auth/user/ | あり | |
| ユーザー更新 | PUT | /auth/user/ | あり | | [AuthUserUpdateRequestDto](./controller/dto/auth.dto.go#L14) |
| ユーザー削除 | DELETE | /auth/user/ | あり | | |
### TodoAPI
| | メソッド | URI | 認証有無 | クエリ | リクエストボディ |
| - | ------- | --- | ------ | - | - |
| ユーザーに紐づく全Todoデータ取得 | GET | /todos/ | あり | | |
| 単一Todoデータ取得 | POST | /todos/id/ | あり | | |
| Todo新規作成 | POST | /todos/ | あり | | [TodoCreateRequestDto](./controller/dto/todo.dto.go#L3) |
| Todo更新 | PUT | /todos/id/ | あり | | [TodoCreateRequestDto](./controller/dto/todo.dto.go#L8) |
| Todo削除 | DELETE | /todos/id/ | あり |
## ミドルウェア対応パス表
| URI | [Cors](./middleware/auth.middleware.go) | [WriteHeader](./middleware/write_header.middleware.go) | [Auth](./middleware/auth.middleware.go) | [SetHttpContext](./middleware/set_http_context.middleware.go) |
|-|-|-|-|-|
|/|x|x|x|x|
|/toods/*/|○|○|○|○|
|/auth/sign_in/|○|○|x|○|
|/auth/sign_up/|○|○|x|○|
|/auth/user/*/|○|○|○|○|
# 環境構築
## 1. ルートディレクトリに「.env」ファイルの用意
```
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|メール送信元のアドレス|
## 2. イメージビルドとDB作成・マイグレーション
```
make setup
```
## 3. APIスタート
```
make start
```
# Makefile
### setup
イメージビルドとDB作成・マイグレーション
### db.create
DB作成
### db.migrate
DBマイグレーション
### db.seed
シードデータ投入
### start
APIスタート(Dockerコンテナ起動)
### end
APIストップ(Dockerコンテナ停止)
### entry-server-container
Dockerサーバーコンテナに ash で入る
### entry-db-container
Docker DBコンテナに bash で入る