Go言語でWebAPIと連携する具体例を示します。この例では、JSONPlaceholderの https://jsonplaceholder.typicode.com/posts
エンドポイントからデータを取得し、結果を出力します。
ステップ1: 新しいGoプロジェクトを作成
まず、新しいGoプロジェクトを作成します。
mkdir go-web-api-example
cd go-web-api-example
go mod init example.com/go-web-api
ステップ2: main.goファイルを作成
次に、main.go
ファイルを作成し、以下のコードを記述します。
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net/http"
)
type Post struct {
UserID int `json:"userId"`
ID int `json:"id"`
Title string `json:"title"`
Body string `json:"body"`
}
func main() {
// JSONPlaceholderのエンドポイントを指定
url := "https://jsonplaceholder.typicode.com/posts"
// HTTPリクエストを作成
resp, err := http.Get(url)
if err != nil {
log.Fatalf("Error fetching data: %v", err)
}
defer resp.Body.Close()
// レスポンスボディを読み取る
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalf("Error reading response body: %v", err)
}
// JSONデータを構造体スライスに変換
var posts []Post
err = json.Unmarshal(body, &posts)
if err != nil {
log.Fatalf("Error unmarshaling JSON: %v", err)
}
// 結果を出力
for _, post := range posts {
fmt.Printf("UserID: %d, ID: %d, Title: %s\n", post.UserID, post.ID, post.Title)
}
}
ステップ3: プログラムを実行
プログラムを実行するには、ターミナルで以下のコマンドを入力します。
go run main.go
実行すると、JSONPlaceholderから取得したデータが出力されます。
UserID: 1, ID: 1, Title: sunt aut facere repellat provident occaecati excepturi optio reprehenderit
UserID: 1, ID: 2, Title: qui est esse
UserID: 1, ID: 3, Title: ea molestias quasi exercitationem repellat qui ipsa sit aut
...
コード説明
net/http
パッケージを使用して、http.Get
関数でWebAPIにGETリクエストを送信します。io/ioutil
パッケージのReadAll
関数を使って、レスポンスボディを読み取ります。encoding/json
パッケージのUnmarshal
関数を使って、JSONデータを構造体スライスに変換します。- 変換した構造体スライスをループして、必要なデータを出力します。
この例では、JSONPlaceholderの /posts
エンドポイントからデータを取得しましたが、任意のWebAPIと連携するためには、そのAPIのレスポンス構造に合わせて構造体を定義する必要があります。また、認証が必要な場合は、リクエストヘッダーを設定する必要があります。
コメント