【VUE】axios组件

种地  论坛元老 | 2024-9-27 06:28:32 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1718|帖子 1718|积分 5154

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. 快速使用



  • npm install axios
  • LoginView.vue
    1. import axios from "axios"
    2. axios.get("...")
    3. axios.post("...")
    4. axios.axios({
    5.         method: "get"
    6. })
    复制代码
2. 通用设置



  • npm install axios
  • plugins/axios.js
    1. import axios from "axios";
    2. let config = {
    3.     baseURL: "xxx",
    4.     timeout: 20 * 1000   // ms
    5. }
    6. const _axios = axios.create(config)
    7. // 拦截器
    8. _axios.interceptors.request.use(function (config){
    9.         xxx;
    10.     return config
    11. })
    12. export default _axios
    复制代码
  • LoginView.vue
    1. <script setup>
    2. import _axios from "@/plugins/axios.js";
    3. _axios.get("/api/v1/course/category/free/?courseType=free").then((res) => {
    4.   console.log(res.data)
    5. })
    6. </script>
    复制代码
3. 示例

plugins/axios.js
  1. import axios from "axios";
  2. let config = {
  3.     baseURL: "https://api.luffycity.com/",
  4.     timeout: 20 * 1000
  5. }
  6. const _axios = axios.create(config)
  7. // 拦截器
  8. _axios.interceptors.request.use(function (config){
  9.     // console.log("请求前:", config)
  10.     // 1. 去pinia中读取当前用户token
  11.     // 2. 发送请求时携带token
  12.     if(config.params){
  13.         config.params["token"] = "djbfkjbdfkj"
  14.     } else {
  15.         config.params = {"token": "whejsabjdnfj"}
  16.     }
  17.     return config
  18. })
  19. export default _axios
复制代码
LoginView.vue
  1. <template>
  2.   <div class="box">
  3.     <p>
  4.       用户名:
  5.       <input type="text" placeholder="用户名" v-model="msg.username">
  6.     </p>
  7.     <p>
  8.       密码:
  9.       <input type="text" placeholder="密码" v-model="msg.password">
  10.     </p>
  11.     <p>
  12.       <button @click="doLogin">登录</button>
  13.     </p>
  14.   </div>
  15. </template>
  16. <script setup>
  17. import {ref} from "vue";
  18. import {useRouter} from "vue-router";
  19. import {userInfoStore} from "@/stores/user.js";
  20. import _axios from "@/plugins/axios.js";
  21. const msg = ref({
  22.   username: "",
  23.   password: ""
  24. })
  25. const router = useRouter()
  26. const store = userInfoStore()
  27. const doLogin = function () {
  28.   // 1、获取数据
  29.   console.log(msg.value)
  30.   // 2、发送网络请求
  31.   _axios.get("/api/v1/course/category/free/?courseType=free").then((res) => {
  32.     console.log(res.data)
  33.   })
  34.   // 3、本地存储用户信息(登录凭证)
  35.   // localStorage.setItem("name", msg.value.username)
  36.   let info = {id: 1, name: msg.value.username, token: "ddsafhsjdfkj"}
  37.   store.doLogin(info)
  38.   // 3、跳转到首页
  39.   router.push({name: "mine"})
  40. }
  41. </script>
  42. <style scoped>
  43. .box {
  44.   width: 300px;
  45.   margin: 100px auto;
  46. }
  47. </style>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

种地

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表