在使用 Node.js 时,有许多支持向另一个服务器发起请求的库,如 node-fetch、phin、got 或 request(已弃用)...
然而,如果你的服务器只是作为客户端应用的 API,而你现在需要从另一个服务器请求一个 JSON 文件或者只是获取外部 API,你应该选择使用哪个库呢?
答案是你不需要为了创建请求而在 package.json 中添加新的依赖,因为 Node.js 有一个名为 https 的内置模块。
HTTPS
https 是 Node.js 预构建的轻量级模块,在大多数 Node.js 版本中都受支持。
你可以使用 https 创建请求,如下所示:
let https = require('https')
https
.get(url, (res) => {
let body = ''
res.on('data', (chunk) => (body += chunk))
res.on('end', () => {
try {
let json = JSON.parse(body)
// 现在你可以使用 json 数据...
} catch (err) {
console.error(`解析 JSON 数据失败 - ${err.toString()}`)
}
})
})
.on('error', (err) => {
console.error(`请求失败!错误:${err.toString()}`)
})在上面的代码中:
- https 是 Node.js 中的内置模块,所以你可以直接
require它,无需安装。 - 你可以使用
https.get(url[, options][, callback])创建请求。 - 在回调中,你使用
res.on()监听响应事件。 - 每次触发
res.on("data")时,你将data添加到字符串body中。 - 当触发
res.on("end")时,你可以简单地使用JSON.parse(body)将 body 解析为 JSON 对象。 - 第
8和11行:注意,你应该在try {} catch() {}块中解析数据,以捕获 JSON 无法解析时的错误。 - 如果请求失败,将触发
error事件。
就是这样!现在让我们将这个逻辑抽象成一个可以在服务器中任何地方使用的函数:
let https = require('https')
let fetchJSON = (url) => {
return new Promise((resolve, reject) => {
https
.get(url, (res) => {
let body = ''
res.on('data', (chunk) => (body += chunk))
res.on('end', () => {
try {
resolve(JSON.parse(body))
} catch (err) {
reject(err)
}
})
})
.on('error', reject)
})
}
module.exports = fetchJSON你可以这样使用它:
// 异步上下文
let data = await fetchJSON(url)
// 使用数据...祝你好运!
On this page
← Previous post[第 2 部分] 在 Namecheap 上以最简单的方式部署和配置您的网站
Next post →使用模块别名简化你的 Node.js 项目

