如何在Node.js/Express.js的服务器端连续调用API
调用API端点是现代互联网技术的核心功能。通常,我们从浏览器中调用API。有时候,我们需要从服务器本身调用API端点来获取数据,加载依赖等。
在NodeJS服务器上调用API有多种方法,取决于你想使用的抽象级别。在NodeJS服务器上调用API的最简单方法是使用Axios库。
项目设置: 创建一个NodeJS项目,然后使用以下命令进行初始化。
mkdir Project && cd Project
npm init -y
模块安装: 安装所需模块,即 ExpressJS 和 Axios ,使用以下命令。
npm i express axios
现在在项目的根目录中创建一个JS文件,并将其命名为 index.js
1. 发起HTTP GET请求:
在 index.js 文件中编写以下代码。
index.js
const express = require('express')
const axios = require('axios')
const app = express()
// Post ID tracker
var num = 0
setInterval(() => {
// Increment post tracker
num++
console.log('Wait for 2 second...')
// Make GET Request on every 2 second
axios.get(
`https://jsonplaceholder.typicode.com/posts/{num}`)
// Print data
.then(response => {
const { id, title } = response.data
console.log(`Post{id}: ${title}\n`)
})
// Print error message if occur
.catch(error => console.log(
'Error to fetch data\n'))
}, 2000)
解释: 在上面的示例中,NodeJS每2秒调用一次API来获取数据。如果promise被解析,那么 块 将被执行并打印数据。如果promise被拒绝, catch块 将被执行并打印错误消息。
使用以下命令运行 服务器 :
node index.js
输出:
2. 发起一个 HTTP POST 请求: 将以下代码写入 index.js 文件中。
index.js
const express = require('express')
const axios = require('axios')
const app = express()
// Dummy database
const posts = [
{
title: 'Headline 1',
id: 1,
body: `sint suscipit perspiciatis velit dolorum
rerum ipsa laboriosam odio`,
userId: 1
},
{
title: 'Headline 2',
id: 2,
body: "fugit voluptas sed molestias voluptatem provident",
userId: 1
},
{
title: 'Headline 3',
id: 3,
body: "voluptate et itaque vero tempora molestiae",
userId: 1
}
]
// Loop over the posts
posts.forEach(post => {
// Post data to API endpoint
axios.post('https://jsonplaceholder.typicode.com/posts/', {
body: post,
})
// Print response
.then(response => {
const { id, title } = response.data.body
console.log(`Post {id}:{title}`)
})
// Print error message if occur
.catch(error => console.log(error))
})
解释: 在上面的示例中,我们创建了虚拟用户数据。NodeJS发出POST请求将这些数据发送到API端点,并打印出响应的数据或错误消息。
使用以下命令运行 服务器 :
node index.js
输出: