2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Node.js(axios)からQiita APIを利用して指定したユーザーの記事を取得するメモ

Posted at

たまに書くけどまとめてなかったので自分用メモとして残しておきます。

axiosを使ってQiita APIをアクセストークン付きで利用します。

アクセストークンの取得

スクリーンショット 2022-10-22 17.15.25.png

スコープのチェックはread_qiitaだけでOK

スクリーンショット 2022-10-22 17.15.48.png

/api/v2/users/:user_id/itemsのサンプルレスポンス

ドキュメント迷子になりますがこちらです。

HTTP/1.1 200
Content-Type: application/json

[
  {
    "rendered_body": "<h1>Example</h1>",
    "body": "# Example",
    "coediting": false,
    "comments_count": 100,
    "created_at": "2000-01-01T00:00:00+00:00",
    "group": {
      "created_at": "2000-01-01T00:00:00+00:00",
      "description": "This group is for developers.",
      "name": "Dev",
      "private": false,
      "updated_at": "2000-01-01T00:00:00+00:00",
      "url_name": "dev"
    },
    "id": "c686397e4a0f4f11683d",
    "likes_count": 100,
    "private": false,
    "reactions_count": 100,
    "stocks_count": 100,
    "tags": [
      {
        "name": "Ruby",
        "versions": [
          "0.0.1"
        ]
      }
    ],
    "title": "Example title",
    "updated_at": "2000-01-01T00:00:00+00:00",
    "url": "https://qiita.com/Qiita/items/c686397e4a0f4f11683d",
    "user": {
      "description": "Hello, world.",
      "facebook_id": "qiita",
      "followees_count": 100,
      "followers_count": 200,
      "github_login_name": "qiitan",
      "id": "qiita",
      "items_count": 300,
      "linkedin_id": "qiita",
      "location": "Tokyo, Japan",
      "name": "Qiita キータ",
      "organization": "Qiita Inc.",
      "permanent_id": 1,
      "profile_image_url": "https://s3-ap-northeast-1.amazonaws.com/qiita-image-store/0/88/ccf90b557a406157dbb9d2d7e543dae384dbb561/large.png?1575443439",
      "team_only": false,
      "twitter_screen_name": "qiita",
      "website_url": "https://qiita.com"
    },
    "page_views_count": 100,
    "team_membership": {
      "name": "Qiita キータ"
    }
  }
]

今回は

  • id
  • likes_count
  • title

の3点を取得しましたが他にもいろいろ取れそうですね。

記事タイトルといいね数の一覧を取得していいね数でソート

記事タイトルといいね数の一覧を取得 -> いいね数でソートします。

取得したアクセストークンを入れて実行しましょう。

const axios = require('axios');
const BASE_URL = `https://qiita.com/api/v2`;

const main = async (USREID) => {
    const ENDPOINT = `${BASE_URL}/users/${USREID}/items?page=1&per_page=100`;
    
    const res = await axios.get(ENDPOINT,{
        headers:{
            'Authorization': `Bearer <Qiitaのアクセストークン>`,
            'Content-Type': 'application/json'
        }
    });
    const items = res.data;
    
    //タイトルといいね数を取得
    const posts = items.map(post => {
        return({
            id: post.id,
            title: post.title,
            likes_count: post.likes_count
        })
    })
    
    //いいね数でソート
    posts.sort((a,b) => a.likes_count - b.likes_count);
    console.log(posts, posts.length);
}

main(`n0bisuke`); //ユーザーID: n0bisukeの記事を100件取得
$ node app.js

省略
  {
    id: '71809f777ac6dbf9be95',
    title: '💰お前らのゴールデンウィークはゴールドじゃない💰',
    likes_count: 87
  },
  {
    id: 'c16f77c7017a2d4018dd',
    title: '【初見にオススメ】Raspberry Pi PicoをブラウザだけでLチカする入門 (Web Serial API)',
    likes_count: 96
  }
] 100

参考

  • Qiita APIドキュメント

  • 検索時のオプション

  • axiosでBearer

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?