kintoneのREST APIを触ってみる(GET records.json編)


開発者用アカウントを作ったまま放置していたのでちょっと触ってみた。
## サンプルに使ったアプリ
FAQアプリを使ってみました。
https://kintone-apps.cybozu.co.jp/023-faq.html
![スクリーンショット 2017-02-23 2.06.29.png](https://qiita-image-store.s3.amazonaws.com/0/23936/e7bcdabf-5693-01af-a419-1eb307d569f7.png "スクリーンショット 2017-02-23 2.06.29.png")



## ユーザー認証
参考：[https://cybozudev.zendesk.com/hc/ja/articles/201941754#step7](https://cybozudev.zendesk.com/hc/ja/articles/201941754#step7)

APIトークンを[アプリ > アプリの設定]から設定する。
![スクリーンショット 2017-02-23 2.03.29.png](https://qiita-image-store.s3.amazonaws.com/0/23936/bc5333aa-f7a1-517a-9615-439ae546acc8.png "スクリーンショット 2017-02-23 2.03.29.png")
[アプリを更新]を実行しないとトークンが有効にならないので要注意。

##レコードを取得する

参考：[https://cybozudev.zendesk.com/hc/ja/articles/202331474](https://cybozudev.zendesk.com/hc/ja/articles/202331474)
ヘッダーに`X-Cybozu-API-Token: YOUR_TOKEN`をつけてGETする。

```bash
curl  -H "X-Cybozu-API-Token: YOUR_TOKEN" "https://YOUR_SUBDOMAIN.cybozu.com/k/v1/records.json?app=APP_ID" | jq .
```

戻り値は以下の通り。

```json
{
  "records": [
    {
      "文字列__複数行__1": {
        "type": "MULTI_LINE_TEXT",
        "value": ""
      },
      "カテゴリー": {
        "type": "CATEGORY",
        "value": [
          "採用"
        ]
      },
      "文字列__複数行__0": {
        "type": "MULTI_LINE_TEXT",
        "value": "やってません。"
      },
      "レコード番号": {
        "type": "RECORD_NUMBER",
        "value": "1"
      },
      "更新者": {
        "type": "MODIFIER",
        "value": {
          "code": "Administrator",
          "name": "Administrator"
        }
      },
      "作成者": {
        "type": "CREATOR",
        "value": {
          "code": "Administrator",
          "name": "Administrator"
        }
      },
      "文字列__複数行_": {
        "type": "MULTI_LINE_TEXT",
        "value": "採用やってますか？"
      },
      "$revision": {
        "type": "__REVISION__",
        "value": "1"
      },
      "更新日時": {
        "type": "UPDATED_TIME",
        "value": "2017-02-22T16:49:00Z"
      },
      "作成日時": {
        "type": "CREATED_TIME",
        "value": "2017-02-22T16:49:00Z"
      },
      "$id": {
        "type": "__ID__",
        "value": "1"
      }
    }
  ],
  "totalCount": null
}
```

##取得するフィードを指定する
`fields`クエリを使用すると、レスポンスの内容を指定できる。

```bash
curl  -H "X-Cybozu-API-Token: YOUR_TOKEN" "https://YOUR_SUBDOMAIN.cybozu.com/k/v1/records.json?app=APP_ID&fields=カテゴリー,文字列__複数行_,文字列__複数行__0" | jq .
```

これで見やすくなった。

```json
{
  "records": [
    {
      "カテゴリー": {
        "type": "CATEGORY",
        "value": [
          "経理"
        ]
      },
      "文字列__複数行__0": {
        "type": "MULTI_LINE_TEXT",
        "value": "担当者に連絡してください。"
      },
      "文字列__複数行_": {
        "type": "MULTI_LINE_TEXT",
        "value": "経費申請はどうしたらいいですか？"
      }
    },
    {
      "カテゴリー": {
        "type": "CATEGORY",
        "value": [
          "採用"
        ]
      },
      "文字列__複数行__0": {
        "type": "MULTI_LINE_TEXT",
        "value": "やってないったらやってないです。"
      },
      "文字列__複数行_": {
        "type": "MULTI_LINE_TEXT",
        "value": "本当にやってないんですか？"
      }
    },
    {
      "カテゴリー": {
        "type": "CATEGORY",
        "value": [
          "採用"
        ]
      },
      "文字列__複数行__0": {
        "type": "MULTI_LINE_TEXT",
        "value": "やってません。"
      },
      "文字列__複数行_": {
        "type": "MULTI_LINE_TEXT",
        "value": "採用やってますか？"
      }
    }
  ],
  "totalCount": null
}
```

## 取得するデータを絞り込む

`query`というクエリをつけることで、取得するデータを絞り込むことができます。

FAQアプリの質問文(F)は"文字列__複数行_"に格納されている様子ですので、質問文で検索してみます。

###実行するクエリ
`文字列__複数行_ like "採用"`
これをUTF-8でエンコードして、queryに渡してやります。


```bash
curl  -H "X-Cybozu-API-Token: YOUR_TOKEN" "https://YOUR_SUBDOMAIN.cybozu.com/k/v1/records.json?app=APP_ID&fields=カテゴリー,文字列__複数行_,文字列__複数行__0&query=%E6%96%87%E5%AD%97%E5%88%97__%E8%A4%87%E6%95%B0%E8%A1%8C_%20like%20%22%E6%8E%A1%E7%94%A8%22" | jq .
```

「採用」というキーワードが入っているデータのみ引き出せているのがわかるかと思います。

```json
{
  "records": [
    {
      "カテゴリー": {
        "type": "CATEGORY",
        "value": [
          "採用"
        ]
      },
      "文字列__複数行__0": {
        "type": "MULTI_LINE_TEXT",
        "value": "やってません。"
      },
      "文字列__複数行_": {
        "type": "MULTI_LINE_TEXT",
        "value": "採用やってますか？"
      }
    }
  ],
  "totalCount": null
}
```

とりあえずここまで。