1
0

More than 1 year has passed since last update.

Go言語で外部APIを呼び出しとJSONの取り扱いについて

Posted at

はじめに

今日はGo言語を用いて外部APIを呼び出し、その結果をJSON形式で取り扱う方法について記載します。
これはWebサービスを開発する際によく用いられる技術で、非常に役立つスキルです。

必要なパッケージのインストール

まずはじめに、net/httpencoding/jsonという2つのパッケージが必要となります。これらはGo言語の標準ライブラリに含まれているので、追加でインストールする必要はありません。

外部APIの呼び出し

まず、net/httpパッケージを使って外部APIを呼び出します。http.Get関数を使うと、HTTPのGETリクエストを送ることができます。

以下に簡単な例を示します。

package main

import (
	"fmt"
	"net/http"
)

func main() {
	// http.Getを用いて外部APIを呼び出す
	resp, err := http.Get("https://api.example.com/data")
	// エラーハンドリング
	if err != nil {
		fmt.Printf("The HTTP request failed with error %s\n", err)
	} else {
		fmt.Println("The HTTP request succeeded")
	}
}

このコードは "https://api.example.com/data" というURLに対してHTTPのGETリクエストを送り、その結果を表示します。

JSONの取り扱い

次に、encoding/jsonパッケージを使ってAPIから返されるJSONデータを取り扱います。例えば、APIから以下のようなJSONが返されるとしましょう。

{
	"data": "Hello, World!"
}

これを取り扱うためのGoのコードは以下の通りです。

package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

// APIから返されるJSONの構造を定義する
type APIResponse struct {
	Data string `json:"data"`
}

func main() {
	// http.Getを用いて外部APIを呼び出す
	resp, err := http.Get("https://api.example.com/data")
	// エラーハンドリング
	if err != nil {
		fmt.Printf("The HTTP request failed with error %s\n", err)
	} else {
		// ioutil.ReadAllでレスポンスボディを全て読み取る
		data, _ := ioutil.ReadAll(resp.Body)

		var responseObject APIResponse
		// json.UnmarshalでJSONデータをGoのオブジェクトに変換する
		json.Unmarshal(data, &responseObject)

		fmt.Println(responseObject.Data)
	}
}

このコードでは、APIから返されるJSONデータをioutil.ReadAll関数で全て読み取ります。次に、json.Unmarshal関数を使ってJSONデータをGoのオブジェクトに変換します。

注意すべき点は、APIResponseという型を作成し、その中にAPIから返されるデータの構造を定義しています。ここでは簡単のため、Dataという1つのフィールドだけを持つ構造体を作成していますが、実際のAPIのレスポンスに合わせて構造体を定義する必要があります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0