GAE+Goで簡単なAPIを立ち上げるサンプルです。
GAEで簡単なAPIを実行するサンプルです。
- RuntimeはGo116です
- Firestoreで簡単な読み書きを行うサンプルコードを含みます
- Cloud Buildでビルド&デプロイできるyamlのサンプルを含みます
GCP環境であることが前提です
- gcloudコマンドを実行できるようにしてください
- Firebase及びFirestoreを有効化してください
- GAEを有効化してください
- IAMを開き、GAEのサービスアカウントに「Firebase管理者」のロールを付与してください
- GAEにデプロイします
make deploy
- /src
- /handler
- /input
- request bodyをマッピングする構造体
- /output
- response bodyをマッピングする構造体
- router.go
- APIのルーティング
- /domain
- /model
- ドメインモデル
- /repository
- infra層(DBやFirestoreなど)のinterface
- /usecase
- ビジネスロジックの実装
- /infra
- repositoryの実装
- /registry
- repositoryに実装をインジェクトして返す
- /lib
- logging、HTTPリクエストなど共通基盤
- /main
- app_{ENV}.yaml(ビルド時にenvconfigで出し分けます)
- main.go
ユーザオブジェクトの追加・取得のサンプルです
- ユーザをUpsertします
- Post body
{"id":1,"name":"test user","age":20}
- ユーザを取得します
Firebase Authenticationを使ってユーザ認証するサンプルがあります。router.goを書き換えて試してみてください。
フロントでidTokenを発行しAppAuthorization
ヘッダにtokenを設定してリクエストしてください。
GAEサービス間通信で、IAPを使ってセキュアにHTTPリクエストするサンプルを書いてあります。試すには、以下の作業が必要です。
- IAPを有効化し、/src/main/app_{ENV}.yamlの
APP_OTHERSERVICE_AUDIENCE
にCLIENT_IDを入力する - IAMを開き、GAEを実行するサービアカウントにidTokenを発行できるロール(serviceAccountTokenCreator)を付ける
テストのサンプルを書いてあります。
- repositoryのインターフェースを変更した場合は、mockgenをインストールしてmockを生成し直してください
make test