发布于 2026-01-06 0 阅读
0

如何通过 API 获取 dev.to 帖子列表

如何通过 API 获取 dev.to 帖子列表

概述

我决定下载我在dev.to上的文章,以便将它们存储在 Git 中。这意味着即使网站宕机,我也有博客内容的备份。第一步是获取我的文章列表。

dev.to API

API 文档在此处

以下接口将显示指定用户的最新文章列表:

https://dev.to/api/articles/latest?username=melvincarvalho

它支持分页,默认情况下每页包含 30 篇文章。可以通过per_page查询参数增加页数,我们将其设置为 1000。这对于大多数用户来说应该足够了。

请将“用户名”替换melvincarvalho为您自己的用户名。

代码

所以我编写了一个 JavaScript 脚本,用于提取我的文章列表。

#!/usr/bin/env node

// requires
const argv = require('minimist')(process.argv.slice(2))
const fs = require('fs')
const path = require('path')
const $ = require('child_process').execSync

// data
globalThis.data = {
  api: 'https://dev.to/api/articles/latest',
  dataDir: path.join(__dirname, '..', 'posts'),
  filename: 'index.json',
  perPage: 1000,
  user: 'melvincarvalho'
}

// init
data.api = argv.api || data.api
data.dataDir = argv.dataDir || data.dataDir
data.filename = argv.filename || data.filename
data.perPage = argv.perPage || data.perPage
data.user = argv._[0] || data.user
console.log('data', data)

// main
let postsUri = `${data.api}`
postsUri += `?per_page=${data.perPage}`
postsUri += `&username=${data.user}`
const cmd = `curl '${postsUri}'`
console.log('cmd', cmd)
const json = JSON.parse($(cmd).toString())

// output
if (!fs.existsSync(data.dataDir)) {
  fs.mkdirSync(data.dataDir, { recursive: true })
}
const output = JSON.stringify(json, null, 2)
const outFile = path.join(data.dataDir, data.filename)
console.log('output', output)
fs.writeFileSync(outFile, output)

Enter fullscreen mode Exit fullscreen mode

Usage: ./getposts.js [username]

代码详解

首先,我们初始化端点和用户名。然后,我们运行 curl 命令获取结果,最后将其格式化并写入文件。

输出

运行此代码将获取文章列表并将其保存到名为“”的文件中。posts/index.json

JSON 输出可以在这里查看,当前脚本在这里

现在我已经有了文章列表,应该也可以下载每篇文章的 Markdown 代码了。我希望能在以后的文章中介绍这部分内容。

实用链接

文章来源:https://dev.to/melvincarvalho/how-to-get-devto-posts-for-the-api-552g