Exploratory コミュニティ

独自のHTTPヘッダーをつけたHTTPリクエストを発効してデータを取得する方法

#1

REST APIからデータを取得する場合、APIキーなどの情報をHTTPヘッダーに設定する必要がある場合があります。「Rスクリプト・データソース」と「curl」の関数パッケージを使うことで、これを実現することができます。Github APIで、特定のユーザーのリポジトリのリストを取得するためのの例をご紹介します。

まず、new_handleという関数を使って、新しいhandleオブジェクトを作成します。それから、それに対して、handle_setheaders関数でHTTPヘッダーを設定します。ここではCache-ControlというHTTPヘッダーを追加しますが、ここを必要に応じて書き換えてください。HTTPヘッダーが設定できたら、curl_fetch_memory関数にURLと今作ったhandleオブジェクトを渡して、データを取得することができます。

ここで注意しなくてはいけないのは、データを取得したら、そこから自分でデータフレームを作成する必要があるということです。Github APIはJSONデータを返すので、ここではJSONデータをデータフレームに変換する方法をあわせて紹介しています。

# Create a new handle.
h <- curl::new_handle()
# Set custom http headers to the handle.
curl::handle_setheaders(h,  "Cache-Control" = "no-cache")
# Get the data from the URL.
data <- curl::curl_fetch_memory("https://api.github.com/users/hadley/repos", handle=h)
# Convert the response data to a data frame.
jsonlite::fromJSON(rawToChar(data$content))

image