APIを設計し、サービスメソッドを実装しました。次は、コンサートサービスを 実行し、そのエンドポイントをテストする段階です。
プロジェクトのルートから、アプリケーションをビルドして実行します:
go run concerts/cmd/concerts
サービスはデフォルトでポート8080でリッスンします(main.go
で変更していない場合)。
新しいAPIを探索しましょう!以下の一般的なHTTPツールを使用してサービスと対話できます:
お好みのツールを選んで、リクエストを開始しましょう!🚀
これらの例では、ほとんどのシステムで利用可能なcurl
を使用します。
ただし、お好みのHTTPクライアントに例を適応させることもできます。
使用するツールに関係なく、概念は同じです。
以下をテストします:
POST
)GET
)GET
)PUT
)DELETE
)新しいコンサートを作成しましょう!このリクエストは、JSON形式でコンサートの 詳細を含むPOSTを送信します。サーバーは一意のIDを生成し、完全な コンサートオブジェクトを返します:
curl -X POST http://localhost:8080/concerts \
-H "Content-Type: application/json" \
-d '{
"artist": "The Rolling Stones",
"date": "2025-05-01",
"venue": "Wembley Stadium",
"price": 150
}'
ページネーションを説明するために、もう1つ作成しましょう:
curl -X POST http://localhost:8080/concerts \
-H "Content-Type: application/json" \
-d '{
"artist": "Pink Floyd",
"date": "2025-07-15",
"venue": "Madison Square Garden",
"price": 200
}'
オプションのページネーションパラメータを使用してすべてのコンサートを取得:
page
: ページ番号(デフォルト:1)limit
: 1ページあたりの結果数(デフォルト:10、最大:100)一覧エンドポイントは、大量のコンサートデータを効率的に管理するためのページネーションをサポートしています。1ページあたりの結果数と表示するページを制御できます。
すべてのコンサートを取得(デフォルトのページネーションを使用):
curl http://localhost:8080/concerts
1ページあたり1件の結果を取得:
curl "http://localhost:8080/concerts?page=1&limit=1"
特定のコンサートに関する詳細情報が必要な場合は、表示エンドポイントを使用します。これは、個々のコンサートの詳細を表示したり、作成/更新後の情報を確認したりする場合に便利です。
<concertID>
を作成時に返されたIDに置き換えてください:
curl http://localhost:8080/concerts/<concertID>
コンサートの詳細を変更する必要がありますか?更新エンドポイントを使用すると、既存のコンサート情報を変更できます。更新したいフィールドのみを含める必要があります - 他のフィールドは現在の値を保持します。
curl -X PUT http://localhost:8080/concerts/<concertID> \
-H "Content-Type: application/json" \
-d '{
"artist": "The Beatles",
"venue": "Madison Square Garden"
}'
コンサートをシステムから削除する必要がある場合(キャンセルされたり、誤って入力されたりした場合など)は、削除エンドポイントを使用します。この操作は永続的なので、注意して使用してください!
curl -X DELETE http://localhost:8080/concerts/<concertID>
GoaはAPIのOpenAPIドキュメントをバージョン2.xと3.0.0の両方の形式で自動生成します。これらのファイルはgen/http/
ディレクトリにあります。
前提条件
Swagger UIの起動
docker run -p 8081:8080 swaggerapi/swagger-ui
ドキュメントの表示
http://localhost:8081
を開くhttp://localhost:8080/openapi3.yaml
を入力基本的なAPI操作を探索したので、リクエストとレスポンスがどのように処理されるかを理解するために、GoaのHTTPエンコーディングとデコーディングについてさらに学びましょう。