当前位置:   article > 正文

请求封装(axios、fetch)

请求封装(axios、fetch)

        在前端发送请求到后台不同的框架与原生js发送请求的方式都不相同,比如我们在使用jquery时发送请求可以用jq中封装好的$.ajax,利用原生js向node发送请求时可以使用原生的ajax(我们也可以手动进行封装),在vue框架或react中可以使用axios或feach向后台发送请求,下面将对axios、feach进行简单封装。

一、axios

1、axios安装命令

npm install axios

2、封装好的axios

  1. import axios from "axios";//下载并引入axios
  2. const myAxios=axios.create({
  3. baseURL:'您的请求路径',
  4. timeout: 5000,//响应超时时间设置
  5. headers:{//设置请求头并携带token
  6. 'Content-Type':'application/json',
  7. 'token':sessionStorage.getItem('token')
  8. }
  9. })
  10. //请求拦截器
  11. axios.interceptors.request.use(function (config){
  12. console.log(config)
  13. return config;
  14. },function (error){
  15. return Promise.reject(error)
  16. })
  17. //响应拦截
  18. axios.interceptors.response.use((response)=>{
  19. console.log(response)
  20. return response;//响应成功
  21. },function (error){//响应失败
  22. switch (error.response.status){
  23. case 401://token有问题
  24. sessionStorage.clear()
  25. alert("重新登录");
  26. window.location.href="/"
  27. window.location.href="/login"
  28. break;
  29. case 400:
  30. break;
  31. }
  32. })
  33. export default myAxios //导出封装好的axios

3、其他页面应用

  1. //post请求方式
  2. axios.post('请求路径',{
  3. //您要发送给后台的数据
  4. username:'admin',
  5. pwd:'admin'
  6. }).then(rep=>{//请求成功返回的数据
  7. console.log(rep)
  8. })

二、fetch

1、安装命令

npm install whatwg-fetch -save

2、对fetch进行封装

  1. import 'whatwg-fetch'//引入
  2. //设置代理后的请求路径
  3. const BASE_URL="/api";//基础请求路径,
  4. //如果是get请求,需要将get请求的参数拼接成字符串
  5. const json2url=(json)=>{
  6. let arr=[];
  7. for(let name in json){
  8. arr.push(name+"="+json[name])
  9. }
  10. return arr.join("&")
  11. }
  12. const http=({url,method="get",params={},data={}})=>{
  13. if(!url)return;
  14. const token=sessionStorage.getItem("token") || "";//获取token(一般登录后存进去)
  15. let options={
  16. method,
  17. headers:{
  18. token
  19. },
  20. }
  21. //判断请求方式,默认使用get方式
  22. if(method=="post"){
  23. options.body=JSON.stringify(data)
  24. }
  25. //返回拼接好的路径
  26. return fetch(BASE_URL+url+"?"+json2url(params),options).then(response=>response.json())
  27. }
  28. export default http;//导出

3、其他页面使用

  1. import http from '../../utils/http'//引入封装好的fetch
  2. //登录请求
  3. http({
  4. url:"请求路径",
  5. params:values//请求参数
  6. }).then(res=>{//请求成功返回
  7. console.log(res);
  8. })

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

闽ICP备14008679号