あなたは歌手とアルバムを管理するAPIの機能開発にたずさわることになりました。
次の課題に順に取り組んでください。
できない課題があっても構いません。
面接中に課題に関して質問をしますので、分かる範囲で説明してください。
プログラムのコードを読み、中身を把握しましょう。
Docker と Go をインストールし(各自で調べてください)、歌手を管理するAPIの動作を確認しましょう。
# (ターミナルを開いて)
# Docker コンテナを起動する
docker compose up -d
# HTTP サーバーを起動する
go run main.go
# (別のターミナルを開いて)
# 歌手の一覧を取得する
curl http://localhost:8888/singers
# 指定したIDの歌手を取得する
curl http://localhost:8888/singers/1
# 歌手を追加する
curl -X POST -d '{"id":10,"name":"John"}' http://localhost:8888/singers
# 歌手を削除する
curl -X DELETE http://localhost:8888/singers/10
アルバムを管理するAPIを新規作成しましょう。
アルバムの一覧を取得するAPI
curl http://localhost:8888/albums
# このようなレスポンスを期待しています
[{"id":1,"title":"Alice's 1st Album","singer_id":1},{"id":2,"title":"Alice's 2nd Album","singer_id":1},{"id":3,"title":"Bella's 1st Album","singer_id":2}]
指定したIDのアルバムを取得するAPI
curl http://localhost:8888/albums/1
# このようなレスポンスを期待しています
{"id":1,"title":"Alice's 1st Album","singer_id":1}
アルバムを追加するAPI
curl -X POST -d '{"id":10,"title":"Chris 1st","singer_id":3}' http://localhost:8888/albums
# このようなレスポンスを期待しています
{"id":10,"title":"Chris 1st","singer_id":3}
# そして、アルバムを取得するAPIでは、追加したものが存在するように
curl http://localhost:8888/albums/10
アルバムを削除するAPI
curl -X DELETE http://localhost:8888/albums/10
アルバムを取得するAPIでは、歌手の情報も付加するように改修しましょう。
指定したIDのアルバムを取得するAPI
curl http://localhost:8888/albums/1
# このようなレスポンスを期待しています
{"id":1,"title":"Alice's 1st Album","singer":{"id":1,"name":"Alice"}}
アルバムの一覧を取得するAPI
curl http://localhost:8888/albums
# このようなレスポンスを期待しています
[{"id":1,"title":"Alice's 1st Album","singer":{"id":1,"name":"Alice"}},{"id":2,"title":"Alice's 2nd Album","singer":{"id":1,"name":"Alice"}},{"id":3,"title":"Bella's 1st Album","singer":{"id":2,"name":"Bella"}}]
歌手とそのアルバムを管理するという点で、現状の実装の改善点を検討し思いつく限り書き出してください。
実装をする必要はありません。