たまに書くけどまとめてなかったので自分用メモとして残しておきます。
axiosを使ってQiita APIをアクセストークン付きで利用します。
アクセストークンの取得
スコープのチェックはread_qiita
だけでOK
/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