ReactJS – Axios 拦截器
在本文中,我们将学习如何在 React 应用程序中拦截由 Axios 拦截器发送的每个请求或响应。
Axios 拦截器自动添加到用户接收的每个请求或响应中的默认配置。它可用于检查收到的每个响应的响应状态代码。
示例
在此示例中,我们将构建一个 React 应用程序,从我们的 React 应用程序发送 POST 请求时,该应用程序会自动检查并记录服务器发送的状态代码。
我们必须在最全局文件中(即 index.js)设置所有配置,以拦截每个请求/响应。
index.jsx
import React from 'react'; import App from './App'; import ReactDOM from 'react-dom'; import axios from 'axios'; // For GET requests axios.interceptors.request.use( (req) => { // Add configurations here return req; }, (err) => { return Promise.reject(err); } ); // For POST requests axios.interceptors.response.use( (res) => { // Add configurations here if (res.status === 201) { console.log('Posted Successfully'); } return res; }, (err) => { return Promise.reject(err); } ); ReactDOM.render( <React.StrictMode> <App /> </React.StrictMode>, document.getElementById('root') );
App.jsx
import React, { useEffect, useState } from 'react'; import './App.css'; const App = () => { const [data, setData] = useState(null); const [val, setVal] = useState(''); const [fetchData, setFetch] = useState(false); useEffect(() => { if (fetchData) { const payload = { method: 'POST', body: JSON.stringify({ title: val }), }; axios.post('https://jsonplaceholder.typicode.com/posts', payload) .then((res) => setData(res.data.id)); } }, [fetchData]); return ( <> {data && <h1>Your data is saved with Id: {data}</h1>} <input placeholder="Title of Post" value={val} onChange={(e) => setVal(e.target.value)} /> <button onClick={() => setFetch(true)}>Save Data</button> ); }; export default App;
在上述示例中,当发送带有数据的请求时,会拦截响应,如果状态代码为 201,则会记录消息“已成功发布”。
输出
这将产生以下结果。
广告