在使用 Axios 进行 HTTP 请求时,拦截器(interceptors)可以帮助你在请求或响应被处理之前进行一些操作。结合 Express.js,你可以在 Axios 拦截器中使用 Express 请求对象来实现一些高级功能,比如在请求头中添加用户认证信息、日志记录等。
以下是一个示例,展示如何在 Axios 拦截器中使用 Express 请求对象。
首先,确保你已经安装了 Axios 和 Express:
npm install axios express
创建一个简单的 Express 服务器,并在中间件中设置 Axios 拦截器。
const express = require('express');
const axios = require('axios');
const app = express();
const port = 3000;
// 中间件:解析 JSON 请求体
app.use(express.json());
// 中间件:设置 Axios 拦截器
app.use((req, res, next) => {
// 创建一个 Axios 实例
const axiosInstance = axios.create();
// 请求拦截器
axiosInstance.interceptors.request.use(
(config) => {
// 在请求头中添加自定义头部信息
config.headers['X-Custom-Header'] = 'CustomHeaderValue';
// 你可以从 Express 请求对象中获取信息并添加到 Axios 请求中
if (req.headers['authorization']) {
config.headers['Authorization'] = req.headers['authorization'];
}
return config;
},
(error) => {
return Promise.reject(error);
}
);
// 响应拦截器
axiosInstance.interceptors.response.use(
(response) => {
// 你可以在这里处理响应数据
return response;
},
(error) => {
return Promise.reject(error);
}
);
// 将 Axios 实例附加到请求对象中,以便在路由处理程序中使用
req.axios = axiosInstance;
next();
});
// 示例路由
app.get('/api/data', async (req, res) => {
try {
// 使用附加到请求对象中的 Axios 实例进行请求
const response = await req.axios.get('https://jsonplaceholder.typicode.com/posts');
res.json(response.data);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
app.listen(port, () => {
console.log(`Server is running on http://localhost:${port}`);
});
启动 Express 服务器:
node app.js
然后,你可以通过浏览器或 Postman 访问 http://localhost:3000/api/data
,你应该会看到从 https://jsonplaceholder.typicode.com/posts
获取的数据。
领取专属 10元无门槛券
手把手带您无忧上云