API紹介②

# APIって使ったことある？ #2

こんばんは皆さま。題目について、昨日もお答えした通り、私は使ったことないです(笑)  
ただ昨日、**GraphiQL（グラフィカル）** を使って、Web上でAPIを試すことができることを知りました！  
まだ見てないよって方へ、記事は[こちら](https://qiita.com/dpf_hirometai/private/6a594e8dfe85da0bb499)です。

そこで本日は、「GraphiQLでAPIを使ってみる」の続編です！  
昨日は「検索」や「カタログ情報の取得」をやってみたのですが、まだまだ機能があるそうで、そちらを試してみます。

<br>

▼この記事を読んで分かること
- 国交DPFの利用者APIにはどんな機能があるのか（GraphiQLを利用しながら）

<br>

この記事は[国交DPFアドベントカレンダー2023 ](https://qiita.com/advent-calendar/2023)に参加しています。本日7日目です。  
クリスマスまで1日ずつ公開される記事を読み進めることで、国交DPFというものを理解し、APIまで使いこなせるようになれるという、超素敵企画です！  
12/9以降は、APIを使ってもっとこんなことができるという事例紹介が始まるので、昨日今日でAPI耐性をつけて挑みましょう(笑)

# GraphiQLでAPIを使ってみる
本日は、GraphiQLを使って、「データ取得」「ファイルURL検索」「キーワードサジェスト」「コード情報取得」をしてみます。

まずはGraphiQLを開きます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629590/364c322b-08cb-4cd2-f77d-b35e0ed8db9d.gif" width="500px">

<br>

## データ取得（data）
データ ID を元にデータのメタ情報を取得できるそうです。
つまり、データIDが分かっている場合は「データ取得」、データIDが分からない場合は「検索」で、データの詳細情報を取得するという使い分けなようです。

やってみましょう。  
昨日、「橋梁」というキーワード検索結果のうち上位5件の情報(id,title)を表示してみたので、その最上位のデータ「滝の平橋」のIDを用いて「データ取得」してみます。

ただ、データ取得には、データセットIDとデータIDが必要なようです。ん～、検索してみます！

```graphql
query {  
  search(term:"橋梁", phraseMatch:true, first:0, size:5) {  
    totalNumber  
    searchResults {  
      id  
      title
      dataset_id  
    }  
  }  
} 
```

これより、「滝の平橋」のデータセットIDはrsdb_bridge、IDは094805ac-c39b-4ca6-9a25-f03e113f161fと分かりました。  
検索は昨日学んだので、スムーズにできました^^

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629590/45e015dd-d920-22ff-0a2d-c9b71196533a.png" width="500px">


では、データセットIDとデータIDを設定して、データ取得してみます。

```graphql
query {  
  data(  
    dataSetID: "rsdb_bridge"  
    dataID: "094805ac-c39b-4ca6-9a25-f03e113f161f"  
  ) {  
    totalNumber  
    getDataResults{  
      title  
    }  
  }  
}  
```

たしかに、「滝の平橋」と検索されましたね！

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629590/277780aa-3f46-136a-16ac-e0b46842a0e8.png" width="500px">


## ファイル URL検索
ファイル ID を元にファイルのダウンロード URL を取得できるそうです。
つまり、今度はファイルIDが必要ですね。ん～、検索してみます！

次は、付属ファイルがありそうな「工事」というキーワードで検索してみます。

```graphql
query {  
  search(term:"工事", phraseMatch:true, first:0, size:5) {  
    totalNumber  
    searchResults {  
      id  
      title  
      dataset_id  
      files {  
        id  
        original_path  
      }  
    }  
  }  
}
```

お！上から3つ目のデータはファイルを持っているようです！  

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629590/4340cbe3-ad5c-de3d-2f58-c577d2caa30e.png" width="500px">

ではこれのダウンロードURLを取得してみます。ファイルIDとパスをコピペして・・

```graphql
query {  
  fileDownloadURLs(  
    files:[  
      {  
        id: "cals/cals_construction/1-2-45434/files/02104/DATA_C_C/Y2015/6.0-02104112-158448401005/INDEX_C.XML",  
        original_path: "files/02104/DATA_C_C/Y2015/6.0-02104112-158448401005/INDEX_C.XML"  
      }  
    ]  
  ) {  
    ID  
    URL  
  }  
}  
```

URLらしきものが出力されました！！！！これをWebに貼り付けたら・・・XMLファイルがダウンロードされました！！！へ～～～こんなことができるんですね。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629590/3f07e0fc-bdb5-fa33-6c45-20046da00687.png" width="500px">

## コード情報取得
都道府県コードと都道府県名を取得できるそうです。

やってみましょう。
全ての都道府県コードと都道府県名を取得してみます。

```graphql
query {  
  prefecture {  
    code  
    name  
  }  
}  
```

でました！北海道から1番ですね。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629590/55957ee6-5b3d-8053-40ee-ff647a560552.png" width="500px">

# 締め
APIドキュメントを見ながらできました。  
できましたが、正直活用方法が私にはわかりません(笑)

ただAPI初心者、2日間で国交DPFの利用者APIを用いてどんなデータ検索ができるのか学びました！おおきな一歩です！

この先APIを用いて、どんなことができるのかについては別の方へバトンタッチします！！！引き続き国交DPFアドカレをお楽しみに！

それでは、お疲れ様でした。