当前位置:   article > 正文

前端实现vue3使用axios调用后端接口_vue3使用axios连接后端接口

vue3使用axios连接后端接口

前言:在探索vue3.0的道路上调接口这件事很重要,所以我就把我探索出来的这条道展示出来,为大家提供便利,望喜欢,废话不多说展示!!!

第一步:在src下创建一个http文件夹,创建一个config的js文件!

作用是:抛出基础请求方式、基础前缀、请求头信息、参数、超时时间、凭证、后端接口返回数据类型!

  1. //import { baseUrl } from '@/utils/global'
  2. export default {
  3. method: 'get',
  4. // 基础url前缀
  5. baseUrl: process.env.BASE_URL,
  6. // 请求头信息
  7. headers: {
  8. 'Content-Type': 'application/json;charset=UTF-8'
  9. },
  10. // 参数
  11. data: {},
  12. // 设置超时时间
  13. timeout: 10000,
  14. // 携带凭证
  15. withCredentials: true,
  16. // 返回数据类型
  17. responseType: 'json'
  18. }

第二步:在src下创建一个http文件夹,创建一个axios的js文件!

作用是:使用请求拦截器和响应拦截器解决下边的问题

  • 从浏览器中创建 XMLHttpRequests
  • 从 node.js 创建 http 请求
  • 支持 Promise API
  • 拦截请求和响应
  • 转换请求数据和响应数据
  • 取消请求
  • 自动转换 JSON 数据
  • 客户端支持防御 XSRF
  1. import axios from 'axios'
  2. const request = axios.create({
  3. baseURL: '/api', // 注意!! 这里是全局统一加上了 '/api' 前缀,也就是说所有接口都会加上'/api'前缀在,页面里面写接口的时候就不要加 '/api'了,否则会出现2个'/api',类似 '/api/api/user'这样的报错,切记!!!
  4. timeout: 5000
  5. })
  6. // request 请求器
  7. // 可以自请求发送前对请求做一些处理
  8. // 比如统一加token,对请求参数统一加密
  9. request.interceptors.request.use(config => {
  10. if(config && config.headers){
  11. config.headers['Content-Type'] = 'application/json;charset=utf-8';
  12. }
  13. // config.headers['token'] = user.token; // 设置请求头
  14. return config
  15. }, error => {
  16. return Promise.reject(error)
  17. });
  18. // response 拦截器
  19. // 可以在接口响应后统一处理结果
  20. request.interceptors.response.use(
  21. response => {
  22. let res = response.data;
  23. // 如果是返回的文件
  24. if (response.config.responseType === 'blob') {
  25. return res
  26. }
  27. // 兼容服务端返回的字符串数据
  28. if (typeof res === 'string') {
  29. res = res ? JSON.parse(res) : res
  30. }
  31. return res;
  32. },
  33. error => {
  34. console.log('err' + error) // for debug
  35. return Promise.reject(error)
  36. }
  37. )
  38. export default request

第三步:在src下创建一个http文件夹,例:创建一个data的文件夹下创建一个index.js!

作用是:这里是放你要请求的接口url、请求方式post/get、传参data最后通过export default方式抛出在页面上调用!

  1. import axios from "../axios";
  2. export const alldata=(data)=>{
  3. return axios({
  4. url:'/article/data',
  5. method:'post',
  6. data
  7. })
  8. }
  9. export default {alldata}

第四步:在终端输入命令!

作用是:下载axios!

npm i axios -g

第五步:在main.js根文件挂载axios!

作用是:vue3不支持以 Vue.prototype的方式绑定全局变量,只能以app.config.globalProperties.$http在全局绑定

图片示例:

 

  1. import axios from 'axios'
  2. app.config.globalProperties.$http=axios;

第六步:要在vue.config.js更改配置实现跨域!

作用是:通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接通过proxy也更改axios发送请求中,配置请求的根路径!

  1. // 配置跨域
  2. const { defineConfig } = require('@vue/cli-service')
  3. module.exports = defineConfig({
  4. transpileDependencies: true,
  5. // lintOnSave:false,
  6. devServer: {
  7. port: 8080, // 端口
  8. proxy: {
  9. '/api': { // 若请求的前缀不是这个'/api',那请求就不会走代理服务器
  10. target: 'http://156.61.146.85:8078', //这里写路径
  11. pathRewrite: { '^/api': '' }, //将所有含/api路径的,去掉/api转发给服务器
  12. ws: true, //用于支持websocket
  13. changeOrigin: true //用于控制请求头中的host值
  14. },
  15. }
  16. }
  17. })

第七步:在需调接口的页面写上所要用的方法,生命周期,初始值,引入的方法!

作用是:调接口渲染页面!

图片示例:

  1. import { reactive,onMounted} from "vue";
  2. import {alldata} from "@/http/Home/home.js"
  3. export default {
  4. name: "app",
  5. setup(){
  6. const datas = reactive({
  7. value:[],
  8. })
  9. const methods = {
  10. requestall(){
  11. const data={
  12. pageNum:10,
  13. pageSize:5,
  14. articieId:100,
  15. };
  16. alldata(data).then(res => {
  17. datas.value=res
  18. console.log(res);
  19. }).catch(err => {
  20. console.log(err)
  21. })
  22. }
  23. }
  24. onMounted(()=>{
  25. methods.requestall()
  26. })
  27. return{
  28. ...methods
  29. }
  30. }
  31. }

 结果:接口调通了200状态码,参数传过去了data,接口的数据也请求到了,vue3.0前后交互达成!!!

图片示例:

                

 

 

 

 

 

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

闽ICP备14008679号