環境構築
①ここから自分の環境にあったGoをインストールする.
②APIを作るGoのフレームワークGinを導入する
go mod init myapp # プロジェクト初期化(1回だけ)
go get github.com/gin-gonic/gin
ソースコード
main.goファイルを作成し,下記を張り付ける.
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default() // Ginのルーター初期化
// ルーティング定義:GET /ping → JSONを返す
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
// サーバー起動(localhost:8080)
r.Run(":8080")
}
GETメソッドを使用し,ローカルホスト番号/pingが指定された時に,JSON形式のメッセージを返します.
その時に,ステータスコードを200(リクエストが正常に処理できた)で返します.
ステータスコードの詳細はこちら
実行
go run main.go
すると,下記のようなログが表示される.
[GIN-debug] Listening and serving HTTP on :8080
GETメソッドの実行
PowerShellを開き,下記コマンドを実行
curl http://localhost:8080/ping
補足
GETメソッドは多用するため,-X GETを記述しなくても使用できる.
下記は同じ処理結果を得ることができる.
curl http://localhost:8080/ping
curl -X GET http://localhost:8080/ping
結果
ステータスコード200で{"message":"pong"}を取得できた.
他のメソッド
Ginでの書き方 curlの例
GET 取得 r.GET() curl http://localhost:8080/XXX
POST 作成 r.POST() curl -X POST -d ...
PUT 全更新 r.PUT() curl -X PUT -d ...
PATCH 一部更新 r.PATCH() curl -X PATCH -d ...
DELETE 削除 r.DELETE() curl -X DELETE ...
メソッド | 操作 | Ginでの書き方 | curlの例 |
---|---|---|---|
GET | 取得 | r.GET() | curl http://localhost:8080/XXX |
POST | 作成 | r.POST() | curl -X POST -d ... |
PUT | 全更新 | r.PUT() | curl -X PUT -d ... |
PATCH | 一部更新 | r.PATCH() | curl -X PATCH -d ... |
DELETE | 削除 | r.DELETE() | curl -X DELETE ... |
GoとGinで作れるもの
Go(Golang)でAPIやWebサービス開発を学び続けると、どんどん作れるものの幅が広がります。以下はレベル別に作れるものの例をまとめたものです。
🌱 初級:今の延長でできるもの
作れるもの | 説明 |
---|---|
REST APIサーバー | JSONを返すシンプルなWebサービス |
TODOアプリのバックエンド | データ追加・更新・削除ができるAPI |
ログイン画面の認証API | ID/パスワードによる簡易ログイン機能 |
JSONで動くチャットAPI | メッセージの送受信をAPI経由で実装 |
🌿 中級:DBや外部連携を使うと
作れるもの | 技術が必要なこと |
---|---|
ユーザー管理システム | MySQL/PostgreSQLとの連携、バリデーション |
予約システムAPI | 時間管理、トークン認証(JWTなど) |
天気やニュースの取得API | 外部API(OpenWeatherなど)と連携 |
スマホアプリ用のバックエンドAPI | CORS設定やJSON構造の工夫 |
🌳 上級:本格的なサービスやマイクロサービス構成
作れるもの | 特徴 |
---|---|
オンラインショップのAPI(カート・決済) | セッション管理・商品検索・在庫処理 |
IoTデバイスと通信するAPI | MQTTやWebSocketとの組み合わせ |
マイクロサービス構成のWebシステム | 複数API間通信、APIゲートウェイ(例:Kong) |
本番デプロイ可能なクラウド連携API | Docker、Kubernetes、CI/CD、自動スケール |