Qiita APIを公式ドキュメントだけ見て作ってみた

# 動機

これまでAPI実装といったら適当なサイトからコピペしてました。楽だし早い。
認証周りとか公式ドキュメントだけだと、自分の読解力では意味が分からない。
しかし!人生一度くらいは自分でやってみたい!
のでやってみます。

## ドキュメント

[APIドキュメント](https://qiita.com/api/v2/docs)

## 1.認証認可を取る
>Qiita::TeamのAPI、またはQiitaのGETリクエスト以外のAPIを利用するには、アクセストークンをリクエストに含める必要があります。アクセストークンは、後述するOAuthを利用した認可フローか、[ユーザの管理画面](https://qiita.com/settings/applications)から発行できます。

ユーザーの管理画面の方からやってみる。
OAuthを利用した認可フローは面倒そうなので。

### 1-1.個人用アクセストークンというやつ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533120/54dd2c32-b95e-06b5-7448-b509aee7ec61.png)

### 1-2.スコープを設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533120/1a48151e-5925-32d5-f2a2-d457626b24cb.png)

### 1-3.できた!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533120/3a78f5ae-5315-b34f-de22-3f98b1deb010.png)



## 2.APIを早速使ってみる

### 2-1.アクセストークンの使い方はかんたん
>アクセストークンは、以下のようにAuthorizationリクエストヘッダに含められます。
>
>Authorization: Bearer 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcd

### 2-2.ドキュメントに書いてあるAPIを使う
>GET /api/v2/items/:item_id/likes
>記事につけられた「いいね！」を作成日時の降順で返します。
>
>```
>GET /api/v2/items/:item_id/likes HTTP/1.1
>Host: api.example.com
>```

### 2-3.curlで試す

```
$ curl -H 'Authorization: Bearer xxxxxxxxx' https://qiita.com/api/v2/items/2fc47ea31c2de9037278/likes
[]
```
そうでした。私の記事に「いいね!」などありませんでした。。。
どの記事も空のjsonが返却されます。

## 3.気を取り直してAPIを使う

### 3-1.自分の記事を取得するAPI

>GET /api/v2/authenticated_user/items
>認証中のユーザの記事の一覧を作成日時の降順で返します。
>
>- page
>  - ページ番号 (1から100まで)
>  - Example: 1
>  - Type: string
>  - Pattern: /^[0-9]+$/
>  - per_page
> - 1ページあたりに含まれる要素数 (1から100まで)
>  - Example: 20
>  - Type: string
>  - Pattern: /^[0-9]+$/
>  - GET /api/v2/authenticated_user/items?page=1&per_page=20 HTTP/1.1
>  - Host: api.example.com

### 3-2.curlでやってみる。

```
$ curl -H 'Authorization: Bearer xxxxxx' https://qiita.com/api/v2/authenticated_user/items?page=1&per_page=1
[{"rendered_body":"\n\u003ch1\u003e\n\u003cspan id=\"rails-dbseedはマスターデータ投入でちょっと面倒だった\" 
・・・
```
取れた!けど見にくい。

### 3-3.curl + python -mjson.tool + grep で閲覧数を取る

"https://xxxxx" みたいにURLをダブルクオーテーションで囲わないと`| python -mjson.tool`で`No JSON object could be decoded`エラーが出る。

```
$ curl -H 'Authorization: Bearer xxxx' "https://qiita.com/api/v2/authenticated_user/items?page=1&per_page=100" |python -mjson.tool|grep 'page_views_count'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 98154    0 98154    0     0   502k      0 --:--:-- --:--:-- --:--:--  504k
        "page_views_count": null,
        "page_views_count": null,
        "page_views_count": null,
        "page_views_count": null,
        "page_views_count": null,
        "page_views_count": null,
        "page_views_count": null,
        "page_views_count": null,
        "page_views_count": null,
```

ぐぬぬ。
ここでドキュメントしかみないことは諦めた。

### 3-4.できた

参考：[自分の Qiita 記事の閲覧数を取得して報告する BOT を作ってみた](https://qiita.com/kunihiros/items/8a600a300ab825bc883d)

```
curl -H "Authorization: Bearer xxxxxx" "https://qiita.com/api/v2/items/2fc47ea31c2de9037278"  |python -mjson.tool | grep 'page_views'
    "page_views_count": 98,
```

# 振り返り

- 良かった点
  - google先生とQiitaの人たちの偉大さを実感できた
- 反省
  - 自分の無力さを思い知った
  - ちょっと息抜き程度に考えてたら1.5時間くらいかかった