最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nuxt實現(xiàn)封裝axios并且獲取token

 更新時間:2023年10月12日 08:39:16   作者:這個殺手好冷  
這篇文章主要介紹了nuxt實現(xiàn)封裝axios并且獲取token,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

nuxt封裝axios并且獲取token

axios 多環(huán)節(jié)變量配置不同地址

npm安裝方式

npm i --D cross-env

  "scripts": {
    "dev": "cross-env process.env.__ENV=測試地址 nuxt",
    "build": "cross-env process.env.__ENV=打包地址 nuxt build",
    "start": "nuxt start",
    "export": "nuxt export",
    "serve": "nuxt serve"
  },

nuxt.config.js配置

env: {
  __ENV: process.env.__ENV
},

axios全局使用的時候

axios.defaults.baseURL?=?process.env.__ENV

nuxt 服務端進行請求時帶上token

期望結果:在服務端、客戶端請求時候帶上token

實現(xiàn)方式:把請求的cookie放到header里

如果沒有 安裝 cookie-universal-nuxt 需要安裝一下插件

//修改 nuxt.config.js
//添加模塊
  modules: [
    'cookie-universal-nuxt',
    "@nuxtjs/axios",
  ]
//添加插件引用
  plugins:[
    '@/plugins/axios',
  ]
//添加插件文件 plugins/axios.js
let isClient = process.env.VUE_ENV === 'client' //區(qū)分端
export default ({ redirect, $axios, app }) => {
  $axios.onRequest(config => {
    return new Promise((resolve, reject) => {
      //match api
      let token = app.$cookies.get('token')
      //add token
      if (token) config.headers.Authorization = token;
      //其他的請求前業(yè)務邏輯 比如:api map
      resolve(config);
    })
  });
  $axios.onResponse(res => {
    return new Promise((resolve, reject) => {
      //返回數(shù)據(jù)邏輯處理 比如:error_code錯誤處理
      resolve(res.data);
    })
  });
  $axios.onError(config => {
    console.log('Making request to ' + config.url)
  })
};

nuxt——nuxt.axios的使用

bug:localStorage不存在

在SSR中,created生命周期在服務端執(zhí)行,node環(huán)境中沒有l(wèi)ocalStorage所以會報錯,

將需要使用localStorage的代碼放到瀏覽器使用的生命周期(mounted)中。

配置文件配置axios文件不在服務端渲染 { src: ‘@/plugins/axios’, ssr: false }

axios封裝 plugins/axios.js

import { Message, Notification } from 'element-ui'
import Cookie from 'js-cookie'
export default function (app) {
  const axios = app.$axios
  // 基本配置
  axios.defaults.timeout = 10000
  axios.defaults.headers.post['Content-Type'] = 'application/json'
  axios.defaults.headers.patch['Content-Type'] = 'application/json'
  axios.defaults.headers.put['Content-Type'] = 'application/json'
  // 請求回調(若token從localStorage獲取,接口只能在mounted之后調用)
  axios.onRequest((config) => {
    const token = Cookie.get('token')
    config.headers.Authorization = token 
  })
  // 返回回調
  axios.onResponse((response) => {
    console.log(8888,response.data)
    if (response.data.code === 200) {
      return Promise.resolve(response.data)
    } else if (response.data.code === 401) {
      Message.error('請登錄后再操作');
    } else {
      Message.error(response.data.msg);
      return Promise.reject(response.data)
    }
  })
  // 錯誤回調
  axios.onError((error) => {
    switch (error.response.status) {
      case 401:
        location.href = '/login'
        break
    }
  })
}
// 	nuxt.config.js
plugins: [
    '@/plugins/element-ui',
    '@/plugins/axios',
    //{ src: '@/plugins/axios', ssr: false } 關閉服務端渲染
  ],
//找到modules模塊,把proxy添加到里面
 modules: [
    '@nuxtjs/axios',
    '@nuxtjs/proxy'
  ],
 axios: {
    proxy: true // Can be also an object with default options
  },
  proxy: {
      '/api': {
      changeOrigin: true,
      target: 'http://127.0.0.1:8082', // 允許跨域的服務器地址
      pathRewrite: {
        '^/api': ''
      }
     }
 }

調用接口

  async asyncData ({ params, $axios }) {
    const { data } = await $axios.get(`/articles/index?pageIndex=1`)
    return { data, page: 1 }
  }
  this.$axios.post('url', {})
  this.$axios.get('url', { params:{} })
  async asyncData ({ params, $axios }) {
    const [articles, category] = await Promise.all([
      $axios.$get(`/articles/category/${params.id}`),
      $axios.$get(`/categories/${params.id}`)
    ])
  }

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • vue使用?vue-socket.io三種方式及踩坑實例解析

    vue使用?vue-socket.io三種方式及踩坑實例解析

    這篇文章主要為大家介紹了vue使用?vue-socket.io三種方式及踩坑實例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • 使用Vue3實現(xiàn)列表虛擬滾動的詳細步驟

    使用Vue3實現(xiàn)列表虛擬滾動的詳細步驟

    在前端開發(fā)中,列表的虛擬滾動是一種常見的優(yōu)化手段,可以大大提升頁面性能,在Vue3中,我們可以通過一些技巧來實現(xiàn)列表的虛擬滾動,本文將介紹如何使用Vue3實現(xiàn)列表的虛擬滾動,讓你的頁面加載更快、更流暢,需要的朋友可以參考下
    2024-09-09
  • Vue拖拽排序組件Vue-Slicksort解讀

    Vue拖拽排序組件Vue-Slicksort解讀

    這篇文章主要介紹了Vue拖拽排序組件Vue-Slicksort,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 基于mpvue的小程序項目搭建的步驟

    基于mpvue的小程序項目搭建的步驟

    mpvue 是美團開源的一套語法與vue.js一致的、快速開發(fā)小程序的前端框架,這篇文章主要介紹了基于mpvue的小程序項目搭建的步驟,非常具有實用價值,需要的朋友可以參考下
    2018-05-05
  • vue使用mui遇到的坑及解決

    vue使用mui遇到的坑及解決

    這篇文章主要介紹了vue使用mui遇到的坑及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vue.js 子組件無法獲取父組件store值的解決方式

    vue.js 子組件無法獲取父組件store值的解決方式

    今天小編就為大家分享一篇vue.js 子組件無法獲取父組件store值的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Vue3播放m3u8視頻的兩種實現(xiàn)方式示例

    Vue3播放m3u8視頻的兩種實現(xiàn)方式示例

    這篇文章主要介紹了Vue3播放m3u8視頻的兩種實現(xiàn)方式,兩種視頻播放器組件分別是vue3-video-play和chimee-player,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-01-01
  • vue2 設置router-view默認路徑的實例

    vue2 設置router-view默認路徑的實例

    今天小編就為大家分享一篇vue2 設置router-view默認路徑的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue-router組件未正確注冊的問題及解決

    vue-router組件未正確注冊的問題及解決

    用戶因導入vue-router名稱與創(chuàng)建實例不一致導致錯誤,后發(fā)現(xiàn)導入的是index.js文件,省略文件名,但問題仍未解決,需檢查掛載配置
    2025-08-08
  • Vue中Keep-Alive緩存組件使用語法及原理深度解析

    Vue中Keep-Alive緩存組件使用語法及原理深度解析

    keep-alive是vue中的內置組件,能在組件切換過程中將狀態(tài)保留在內存中,防止重復渲染DOM,這篇文章主要介紹了Vue中Keep-Alive緩存組件使用語法及原理,需要的朋友可以參考下
    2024-07-07

最新評論

玉龙| 平陆县| 阳谷县| 桐乡市| 花莲县| 江津市| 三亚市| 东台市| 达孜县| 抚顺市| 松溪县| 成安县| 静海县| 四平市| 通河县| 固始县| 石嘴山市| 隆尧县| 怀安县| 新和县| 格尔木市| 无锡市| 万全县| 综艺| 海城市| 喀什市| 英德市| 庆云县| 东明县| 文化| 海淀区| 岗巴县| 富源县| 高陵县| 洛川县| 无锡市| 黄龙县| 余干县| 海原县| 双城市| 玛纳斯县|