1
0

楽天トラベルAPIを使ってみた

Posted at

楽天トラベルAPIを使ってみた

食べ頃のプリン

友達の髪が茶髪から色が黒みを取り戻し、プリンみたいな感じになってました。

「食べ頃だね」

と私がいうと

「あ、いい感じの焦がしプリンでしょ」

と言いました。

甘い プリンって いいよね
API......。


目次
1. 楽天トラベルAPIとは
2. Go言語で簡単な実装してみた
3. おわりに

1. 楽天トラベルAPIとは

 APIでなんか遊んでみたいと思い、楽天トラベルAPIというものを使ってみました。

 楽天トラベルAPIは、楽天トラベルが提供するウェブサービスの一つで、開発者が楽天の旅行関連のデータや機能を自分のアプリケーションやウェブサイトに統合することができるプログラミングインターフェースです。

 まず、Rakuten Developersへアクセスし、アカウントを登録します。
Rakuten Developers

 次にアプリIDを発行します。

 アプリIDにはウェブサイトのURLが必要になります。

 私はGitHub Pagesを使い、作りました。
GitHub Pages

 そしてアプリIDが取得できるので、それを使い色々と作業ができます。

2. Go言語で簡単な実装してみた

楽天トラベルAPI

下記はコード例です。
applicationId := "ここは任意のアプリケーションIDを入れてください" // アプリケーションIDを設定

 ここは先ほど登録して取得した、アプリケーションIDを入力してください。

また公式の例を使ってみます。

(1)田沢湖の宿を検索する場合
https://app.rakuten.co.jp/services/api/Travel/SimpleHotelSearch/20170426?
applicationId=[アプリID]
&format=xml
&largeClassCode=japan
&middleClassCode=akita
&smallClassCode=tazawa

コード例

package main

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

// 楽天トラベル施設検索APIのレスポンスを格納するための構造体
type HotelSearchResponse struct {
    // レスポンス構造に応じてフィールドを定義
    // 例:
    Hotels []struct {
        Hotel []struct {
            HotelBasicInfo struct {
                HotelName        string `json:"hotelName"`
                HotelInformationURL string `json:"hotelInformationUrl"`
            } `json:"hotelBasicInfo"`
        } `json:"hotel"`
    } `json:"hotels"`
}

func main() {
    applicationId := "ここは任意のアプリケーションIDを入れてください" // アプリケーションIDを設定
    // 楽天トラベル施設検索APIのURL
    url := "https://app.rakuten.co.jp/services/api/Travel/SimpleHotelSearch/20170426?" +
        "applicationId=" + applicationId +
        "&format=json" + // JSON形式を指定
        "&largeClassCode=japan" +
        "&middleClassCode=akita" +
        "&smallClassCode=tazawa"

    // HTTPリクエストを作成
    resp, err := http.Get(url)
    if err != nil {
        log.Fatal(err)
    }
    defer resp.Body.Close()

    // レスポンスの内容を読み込み
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Fatal(err)
    }

    // レスポンスのJSONを構造体にデコード
    var result HotelSearchResponse
    if err := json.Unmarshal(body, &result); err != nil {
        log.Fatal(err)
    }

    // 結果を出力
    for _, hotel := range result.Hotels {
        for _, h := range hotel.Hotel {
            fmt.Println("ホテル名:", h.HotelBasicInfo.HotelName)
            fmt.Println("ホテル情報URL:", h.HotelBasicInfo.HotelInformationURL)
        }
    }
}

そして

go run main.go

と実行すると

出力結果

ホテル名: 亀の井ホテル 田沢湖
ホテル情報URL: https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=11222
ホテル名: 
ホテル情報URL: 
ホテル名: 日本の山岳温泉リゾート 新玉川温泉
ホテル情報URL: https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=15408
ホテル名: 
ホテル情報URL: 
ホテル名: グリーンホテル大曲
ホテル情報URL: https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=10867
ホテル名: 
ホテル情報URL: 
ホテル名: リバーサイドホテル大曲
ホテル情報URL: https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=162983
ホテル名: 
ホテル情報URL: 
ホテル名: 休暇村 乳頭温泉郷
ホテル情報URL: https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=72803
ホテル名: 
ホテル情報URL: 
ホテル名: 花心亭しらはま
ホテル情報URL: https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=139459
ホテル名: 
ホテル情報URL: 
ホテル名: あきた芸術村 温泉ゆぽぽ
ホテル情報URL: https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=5576
ホテル名: 
ホテル情報URL: 
ホテル名: 町家ホテル角館
ホテル情報URL: https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=161208
ホテル名: 
ホテル情報URL: 
ホテル名: ホテルフォルクローロ角館JR東日本ホテルズ
ホテル情報URL: https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=1720
ホテル名: 
ホテル情報URL: 
ホテル名: 大曲シティホテル
ホテル情報URL: https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=145044
ホテル名: 
ホテル情報URL: 
ホテル名: 田町武家屋敷ホテル
ホテル情報URL: https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=107856
ホテル名: 
ホテル情報URL: 
ホテル名: 心に和みが灯る宿 水沢温泉郷 青荷山荘
ホテル情報URL: https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=5387
ホテル名: 
ホテル情報URL: 
ホテル名: 大曲エンパイヤホテル
ホテル情報URL: https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=13886
ホテル名: 
ホテル情報URL: 
ホテル名: Tabist ホテル富士
ホテル情報URL: https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=20646
ホテル名: 
ホテル情報URL: 
ホテル名: 乳頭温泉郷 大釜温泉
ホテル情報URL: https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=59623
ホテル名: 
ホテル情報URL: 
ホテル名: 角館温泉 花葉館
ホテル情報URL: https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=128566
ホテル名: 
ホテル情報URL: 
ホテル名: 湖畔浪漫の宿 かたくりの花
ホテル情報URL: https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=162793

 こんな感じで出てきます。

3. おわりに

今回は簡単な例でしたが、もっと活用していきたいです。

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