react--axios响应拦截

react--axios响应拦截

目录结构

在这里插入图片描述

前言

直接调用axios发起请求,每次都需要对返回结果进行判断(如返回状态码,返回信息),然后对成功和失败两种情况进行不同的处理,每次请求都有很多冗余代码,可以对响应结果封装一层

import axios from "axios"

axios.get(url).then(res => {

    if ( res.status===200) {
        // do something success
    } else {
       // do something error
    }
})


响应拦截

interceptors.js

import _axios from "axios"

//设置baseURL
const axios = _axios.create({
    baseURL: '/api',
});

// 响应拦截处理
axios.interceptors.response.use(
    response => {
        return Promise.resolve(response.data)
    },
    error => {
        return Promise.reject(error.response)
    }
)

export default axios



重新请求

import React ,{useEffect,useState}from 'react';
import ReactDOM from 'react-dom';
import axios from './interceptors'



 function App() {

  const [msg,setMsg]=useState("")

 
  useEffect(()=>{
    axios.get("list.json").then(data=>{
      setMsg(data.message)
    })
  },[])
  
 return msg
}



ReactDOM.render(<App />, document.getElementById("root"));

list.json

{
  "success": true,
  "result": {
    "list":[
      {
        "id": 1,
        "name": "冷月心",
        "age":18,
        "like": "coding"
      }
    ]
  },
  "message": "请求成功"
}

发布了451 篇原创文章 · 获赞 788 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/qq_42813491/article/details/103992346
今日推荐