JSON API on Docker
Docker上でGo言語を用いてJSON APIを作成しました。
Postgresと連結して名前とメールアドレスを管理します。
20180702: Reviewを元に改善を行いました
20190223: Docker multi-stage buildsに変更しました。ローカルのgolang環境が必要なくなりました
ディレクトリ構成
. ├── README.md ├── docker-compose.yml # docker-compose設定ファイル └── webapp # WebAPIコンテナ ├── CRUD # PostgresのCRUD操作用Go言語パッケージ │ └── CRUD.go ├── Dockerfile ├── Makefile └── webapp.go
#依存ソフトウェア docker docker-compose #依存コンテナ alpine:latest golang:alpine postgres:alpine
サーバー側
#ビルド $ docker-compose build #コンテナ起動 $ docker-compose up -d #コンテナ終了 $ docker-compose down
httpリクエスト
$ curl -XGET -H 'Content-Type:application/json' http://localhost:8080/
レスポンス(HTTP ステータスコード 200)
{ "message": "Hello World!!" }
httpリクエスト
$ curl -XPOST -H 'Content-Type:application/json' http://localhost:8080/users -d '{"name": "test", "email": "[email protected]" }'
レスポンス(HTTP ステータスコード 200)
{ "id": 1, "name": "test", "email": "[email protected]", "created_at": "2018-05-27T23:30:46.061325+09:00", "updated_at": "2018-05-27T23:30:46.061325+09:00" }
httpリクエスト
$ curl -XPUT -H 'Content-Type:application/json' http://localhost:8080/users/1 -d '{"name": "koudaiii", "email": "[email protected]" }'
レスポンス(HTTP ステータスコード 200)
{ "id": 1, "name": "koudaiii", "email": "[email protected]", "created_at": "2018-05-27T23:30:46.061325+09:00", "updated_at": "2018-05-27T23:31:14.140414+09:00" }
httpリクエスト
$ curl -XGET -H 'Content-Type:application/json' http://localhost:8080/users/1
レスポンス(HTTP ステータスコード 200)
{ "id": 1, "name": "koudaiii", "email": "[email protected]", "created_at": "2018-05-27T23:30:46.061325+09:00", "updated_at": "2018-05-27T23:31:14.140414+09:00" }
httpリクエスト
$ curl -XGET -H 'Content-Type:application/json' http://localhost:8080/users
レスポンス(HTTP ステータスコード 200)
[ { "id": 1, "name": "koudaiii", "email": "[email protected]", "created_at": "2018-05-27T23:30:46.061325+09:00", "updated_at": "2018-05-27T23:31:14.140414+09:00" } ]
httpリクエスト
$ curl -XDELETE -H 'Content-Type:application/json' http://localhost:8080/users/1
レスポンス(HTTP ステータスコード 200)