当前位置:   article > 正文

react请求数据统一处理(axios)_axios accept

axios accept

开发中为了方便开发和便于维护,我们将所有的请求统一处理。这样可以提高我们的开发效率,而且便于后期的维护。

在src目录下新建文件夹api,创建三个js文件:server.js,serverAPI.config.js,api.js.如下图:

server.js文件处理axios跨域问题。代码如下:

  1. import axios from 'axios';
  2. //取消请求
  3. let CancelToken = axios.CancelToken
  4. axios.create({
  5. timeout: 15000 ,// 请求超时时间
  6. headers: {
  7. 'Content-Type': 'application/x-www-form-urlencoded'
  8. }
  9. })
  10. //开始请求设置,发起拦截处理
  11. axios.interceptors.request.use(config => {
  12. //得到参数中的requestname字段,用于决定下次发起请求,取消相应的 相同字段的请求
  13. //post和get请求方式的不同,使用三木运算处理
  14. let requestName = config.method === 'post'?config.data.requestName :config.params.requestName
  15. //判断,如果这里拿到上一次的requestName,就取消上一次的请求
  16. if(requestName) {
  17. if(axios[requestName]&&axios[requestName].cancel){
  18. axios[requestName].cancel()
  19. }
  20. config.cancelToken = new CancelToken(c => {
  21. axios[requestName] = {}
  22. axios[requestName].cancel = c
  23. })
  24. }
  25. return config
  26. }, error => {
  27. return Promise.reject(error)
  28. })
  29. // respone拦截器
  30. axios.interceptors.response.use(
  31. response => {
  32. const res = response.data;
  33. //这里根据后台返回来设置
  34. if (res.msg === "success") {
  35. return response.data;
  36. } else {
  37. return Promise.reject(error);
  38. }
  39. },
  40. error => {
  41. return Promise.reject(error)
  42. }
  43. )
  44. export default axios

serverAPI.config.js文件处理所有接口

  1. /***
  2. *
  3. *统一定义接口,有利于维护
  4. *
  5. **/
  6. const HISTORY= 'https://www.xxxxx.com/';
  7. const URL ={
  8. histOpen:HISTORY+'type/pagelist',//接口1
  9. histdata:HISTORY+'type/pagedata' //接口2
  10. }
  11. export default URL

api.js文件,统一定义接口方法

  1. import server from './server';
  2. import url from './serviceAPI.config';
  3. //接口1方法
  4. export function histOpen(data){
  5. return server({
  6. url: url.histOpen,
  7. method: 'post',
  8. dataType: "json",
  9. contentType: "application/x-www-form-urlencoded;charset=UTF-8",
  10. data: data
  11. })
  12. }
  13. //接口2方法
  14. export function histdata(data){
  15. return server({
  16. url: url.histdata,
  17. method: 'post',
  18. dataType: "json",
  19. contentType: "application/x-www-form-urlencoded;charset=UTF-8",
  20. data: data
  21. })
  22. }

使用时在需要的组件里面引入api.js,举个栗子

  1. import React from 'react';
  2. import {histOpen} from './../api/api';
  3. export default class Login extends React.Component{
  4. constructor(props){
  5. super(props)
  6. this.state = {
  7. numbers:[],
  8. historyList:{//参数
  9. PageSize:25,
  10. PageNum:1
  11. }
  12. }
  13. }
  14. async componentDidMount(){
  15. const islogin = await histOpen(this.state.historyList);
  16. this.setState({
  17. numbers:islogin.datas
  18. })
  19. }
  20. render(){
  21. return(
  22. <div>
  23. <p>随便填写</p>
  24. </div>
  25. )
  26. }
  27. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/283616
推荐阅读
相关标签
  

闽ICP备14008679号