<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Axios在vue專案中用的較多,每次都要寫一遍很是不方便,尤其其中的config設定項是公用的,完全可以封裝一下,這樣下次再用就可以直接CV了!畢竟CV大法香啊!
建立一個request.js 檔案,內容如下,我把解釋性文字放在註釋裡了。
import axios from 'axios' export function request(config) { // 1.建立axios的範例 const instance = axios.create({ // 設定基礎的url設定項,這樣介面處的url前面就不用寫url:'http://127.0.0.1:8000/api/home',直接寫成 url:'/api/home', 就可以了 baseURL: 'http://127.0.0.1:8000/', //設定請求超時時間 timeout: 5000 }) // 2.axios的攔截器,用不到的可以忽略這節 // 2.1.請求攔截的作用 instance.interceptors.request.use(config => { return config }, err => { console.log('請求攔截err: '+err); }) // 2.2.響應攔截 instance.interceptors.response.use(res => { return res.data }, err => { console.log('響應攔截err: '+err); }) // 3.傳送真正的網路請求 return instance(config) }
我們可以將相關的網路請求都放在一個js中,這樣再使用和修改的時候就方便查詢了。其中get請求比較簡單,post 的請求根據傳物件輸型別不同,要做不同設定。
現在來說說post請求常見的資料格式(content-type)
Content-Type: application/json : 請求體中的資料會以json字串的形式傳送到後端,這種是axios預設的請求資料型別,我們只需將引數序列化json字串進行傳遞即可,無需多餘的設定。
Content-Type: application/x-www-form-urlencoded:請求體中的資料會以普通表單形式(鍵值對)傳送到後端
Content-Type: multipart/form-data: 它會將請求體的資料處理為一條訊息,以標籤為單元,用分隔符分開。既可以上傳鍵值對,也可以上傳檔案。
建立一個network.js 檔案,內容如下:
// 匯入封裝好的Axios import {request} from './request' //注意request.js的相對路徑問題 //1. get請求---獲取首頁的多個資料 export function getHomeMultidata() { return request({ url:'/api/home', method:'get', // 可以帶引數也可以不帶引數 // params: { // userName: 'Lan', // password: '123' // } }) } // 2.1 post請求---傳輸json資料時,獲取電視劇多個資料 export function getTvshowMultidata() { return request({ url:'/api/Tvshow', headers: { 'Content-Type': 'application/json' }, method:'post', data: { userName: 'Lan', password: '123' } }) } //2.2 post請求---傳輸檔案流,表單Form Data 資料時 export function getMovieMultidata() { return request({ url:'/api/Movie', headers: { 'Content-Type': 'multipart/form-data'; }, method:'post', data: { userName: 'Lan', password: '123' } }) }
在script 標籤中按需匯入network.js 中需要使用的方法
import {getHomeMultidata} from "network/home/network"; //匯入js,路徑自己根據檔案位置設定
在方法中按照promise的格式呼叫函數即可
created() { // 在方法中呼叫函數即可 getHomeMultidata().then( res => { // 此處res 為返回的資料,將返回的資料進行處理顯示 this.banners = res.homedata.slice(0,5) this.newestData = res.homedata.slice(5,12) ).catch( err => { console.log(err) } ); },
network中的其他網路請求方法使用方法同上。
1.首先在專案中下載axios
npm install axios -s //此方法會將axios下載到package.json中的"dependencies"模組中,大家可以自行檢視
2.因為沒有封裝所以需要在單個vue元件中的編寫js的地方進行參照axios;語法如下
<script> import axios from ' axios' </script>
3.然後在生命週期函數中進行呼叫資料
export default{ created() { //get請求 axios.get("url", { params: { //此處為get請求傳遞的引數 但是一把get請求是沒有引數的 params是固定的 password: "123456", userName: "320621200305185129", }, }) .then(function (response) { console.log(response, 666666); }) .catch(function (error) { console.log(error, 44444); }); }, } //post請求 axios.post('url', { //此處是引數 firstName: 'Fred', lastName: 'Flintstone' }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });
每個專案的的介面都是不一樣的,很多時候程式碼都不是唯一性的,要靈活的運用
首先一個目錄utils,在該目錄下建立request.js 在裡面編寫
import axios from 'axios' export function request(config) { // 1.建立axios的範例 const instance = axios.create({ // 設定基礎的url設定項,這樣介面處的url前面就不用寫了 baseURL: 'http://192.168.0.112:9518/', 基礎程式碼 //設定請求超時時間 timeout: 5000 }) // 2.axios的攔截器,用不到的可以忽略這節 // 2.1.請求攔截的作用 instance.interceptors.request.use(config => { return config }, err => { console.log('請求攔截err: '+err); }) // 2.2.響應攔截 instance.interceptors.response.use(res => { return res.data }, err => { console.log('響應攔截err: '+err); }) // 3.傳送真正的網路請求 return instance(config) }
然後在目錄下建立api在此處建立index.js 在此處參照上方建立axios範例
import {request} from '../utils/request' //get請求 export function denglu() { return request({ url: 'login', method: 'get', params:{ //此處為傳遞的引數 //get請求一般是不傳遞引數的 password:'123456', uerName:'5555555555' } // header: { // 已經在request.js裡面進行全域性設定,也可以在請求裡面區域性設定其他headers // 'Content-Type': 'text/plain' // } }) } //post請求 export function denglu() { return request({ url: 'login', method: 'post', data:{ //此處為傳遞的引數 password:'123456', uerName:'5555555555' } // header: { // 已經在request.js裡面進行全域性設定,也可以在請求裡面區域性設定其他headers // 'Content-Type': 'text/plain' // } }) }
然後需要在vue元件的中 在編寫js的地方引入index.js
<script> import denglu from "../api/index" </script>
之後就可以在vue元件方法中進行應用了,下面是我在vue元件中根據上面的程式碼進行應用的範例
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45