vue全家桶歸納下來就是javascript
vue有本身的http請求工具插件vue-resource,可是vue2.0後做者就不在更新了,後更推薦axios。vue
下面是vue項目中axios經常使用的方法,以及生成虛擬數據的easy-mock的使用方法。java
1、axios安裝和easy-mock的使用node
1. axiosios
axios基於http客戶端的promise,面向瀏覽器和nodejs。參考地址: https://www.kancloud.cn/yunye/axios/234845vue-router
特色vuex
瀏覽器端發起XMLHttpRequests請求vue-cli
node端發起http請求npm
支持Promise APIjson
監聽請求和返回
轉化請求和返回
取消請求
自動轉化json數據
客戶端支持抵禦
安裝
npm install --save axios
爲了解決post默認使用的是x-www-from-urlencoded 去請求數據,致使請求參數沒法傳遞到後臺,因此還須要安裝一個插件QS
npm install qs
2. easy-mock
Easy Mock 是一個可視化,而且能快速生成 模擬數據 的持久化服務。不須要再本地安裝,只須要到官網上註冊登錄後加入或新建項目,在項目內定義接口和返回數據的格式。
地址:https://www.easy-mock.com/login
步驟以下:
1)登錄
2)新建項目
3)新建接口,Base URL是訪問地址
4)定義接口名稱和數據返回格式
這樣一個接口就定義好了,咱們能夠經過請求工具訪問,就能夠獲得 /login中剛定義的數據。更多定義easy-mock返回數據格式的方式,具體請參考官網例子。參考其餘例子:https://blog.csdn.net/qq_42991509/article/details/94577331
2、axios 使用
axios的實例方法和配置不少,下面只是經常使用基本的封裝和使用方式。
在vue項目中src文件夾下,有這幾個須要新增的地方。
1. appCount.js文件
const HTTP_BASE_URL = 'https://www.easy-mock.com/mock/5d5f5a3f6778c215243b94ea/' // easy-mock const TOKEN = '1234' // token export default { HTTP_BASE_URL, TOKEN }
在appCount.js文件中,咱們能夠放一些全局的變量。例如:訪問地址的ip、token常量,超時取消請求的時常等。
2. request.js文件
import axios from 'axios' import appCONST from './appCount.js' const requestData = async (url, params = {}) => { let res = await axios({ url: appCONST.HTTP_BASE_URL + url, data: params || {}, method: params.method || 'POST', header: params.header || { 'content-type': 'application/json' } }) console.log(res) if(requestSuccess(res)) { return res.data } else { throw requestException(res) } } /** * 請求成功 */ function requestSuccess(res) { const status = res.status // 請求錯誤 if (status !== 200) { return false } const resData = res.data return !(resData && resData.code !== 1) } /** * 異常 */ function requestException(res) { const error = {} error.serverCode = res.status const resData = res.data error.code = resData.code error.msg = resData.msg || '系統錯誤' error.data = resData.result || {} return error } // 導出封裝函數 export default { requestData }
在上面文件中,requestData方法是咱們封裝的axios請求,在方法中,我並無使用到安裝時qs。由於在方法中定義了請求頭content-type的類型是json格式,因此參數格式直接傳對象進來就能夠了。
若是沒有定義content-type的類型,那麼默認是application/x-www-form-urlencoded。請求參數在Form Data中,只能上傳鍵值對,而且鍵值對都是間隔分開的。
參數形式: name1=value1&name2=value2。那麼最好引入qs,而後將params格式化一下,data:qs.stringify(params)。
3. util.js
能夠寫一些公共的方法,例如:存取本地緩存,參數格式化等方法。而後在須要用到的地方導入這個文件,就可使用其中的方法了。
export const localSave = (key, value) => { localStorage.setItem(key, value) } export const localRead = (key) => { return localStorage.getItem(key) || '' }
使用方式
<script> import * as util from '@/libs/util' export default { name: 'login', data() { return { da:'' } }, methods: { submit() { util.localSave('data', '123') } } } </script>
4. api.js
import wxRequest from '../libs/request' // 用戶登陸 const login = (params) => wxRequest.requestData('login', params) export default { login }
5. 調用接口
<template> <div> <button @click="submit()">點我登錄</button> </div> </template> <script> import api from '@/api/api' export default { name: 'login', data() { return { da:'' } }, methods: { async submit() { try { const dd = await api.login() console.log(dd) } catch(err) { console.log(err) } } } } </script>
更多方法,例如添加攔截器也挺好用。