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

vue如何封裝Axios的get、post請(qǐng)求

 更新時(shí)間:2022年06月01日 11:27:36   作者:記憶毛球  
這篇文章主要介紹了vue如何封裝Axios的get、post請(qǐng)求,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

封裝Axios的get、post請(qǐng)求

Axios在vue項(xiàng)目中用的較多,每次都要寫一遍很是不方便,尤其其中的config配置項(xiàng)是公用的,完全可以封裝一下,這樣下次再用就可以直接CV了!畢竟CV大法香啊!

1.封裝Axios基礎(chǔ)配置

創(chuàng)建一個(gè)request.js 文件,內(nèi)容如下,我把解釋性文字放在注釋里了。

import axios from 'axios'
export function request(config) {
  // 1.創(chuàng)建axios的實(shí)例
  const instance = axios.create({
    // 設(shè)置基礎(chǔ)的url配置項(xiàng),這樣接口處的url前面就不用寫url:'http://127.0.0.1:8000/api/home',直接寫成 url:'/api/home', 就可以了
    baseURL: 'http://127.0.0.1:8000/', 
    //設(shè)置請(qǐng)求超時(shí)時(shí)間
    timeout: 5000 
  })
  // 2.axios的攔截器,用不到的可以忽略這節(jié)
  // 2.1.請(qǐng)求攔截的作用
  instance.interceptors.request.use(config => {
    return config
  }, err => {
    console.log('請(qǐng)求攔截err: '+err);
  })
  // 2.2.響應(yīng)攔截
  instance.interceptors.response.use(res => {
    return res.data
  }, err => {
        console.log('響應(yīng)攔截err: '+err);
  })
  // 3.發(fā)送真正的網(wǎng)絡(luò)請(qǐng)求
  return instance(config)
}

2.封裝網(wǎng)絡(luò)請(qǐng)求

我們可以將相關(guān)的網(wǎng)絡(luò)請(qǐng)求都放在一個(gè)js中,這樣再使用和修改的時(shí)候就方便查找了。其中g(shù)et請(qǐng)求比較簡(jiǎn)單,post 的請(qǐng)求根據(jù)傳對(duì)象輸類型不同,要做不同設(shè)置。

現(xiàn)在來說說post請(qǐng)求常見的數(shù)據(jù)格式(content-type)

Content-Type: application/json : 請(qǐng)求體中的數(shù)據(jù)會(huì)以json字符串的形式發(fā)送到后端,這種是axios默認(rèn)的請(qǐng)求數(shù)據(jù)類型,我們只需將參數(shù)序列化json字符串進(jìn)行傳遞即可,無需多余的配置。

Content-Type: application/x-www-form-urlencoded:請(qǐng)求體中的數(shù)據(jù)會(huì)以普通表單形式(鍵值對(duì))發(fā)送到后端

Content-Type: multipart/form-data: 它會(huì)將請(qǐng)求體的數(shù)據(jù)處理為一條消息,以標(biāo)簽為單元,用分隔符分開。既可以上傳鍵值對(duì),也可以上傳文件。

創(chuàng)建一個(gè)network.js 文件,內(nèi)容如下:

// 導(dǎo)入封裝好的Axios
import {request} from './request' //注意request.js的相對(duì)路徑問題
//1. get請(qǐng)求---獲取首頁的多個(gè)數(shù)據(jù)
export function getHomeMultidata() {
  return request({
    url:'/api/home',
    method:'get',
    // 可以帶參數(shù)也可以不帶參數(shù)
    // params: {
    //     userName: 'Lan',
    //     password: '123'
    // }
  })
}
// 2.1 post請(qǐng)求---傳輸json數(shù)據(jù)時(shí),獲取電視劇多個(gè)數(shù)據(jù)
export function getTvshowMultidata() {
  return request({
    url:'/api/Tvshow',
     headers: {
      'Content-Type': 'application/json'
    },
    method:'post',
    data: {
        userName: 'Lan',
        password: '123'
     }
  })
}
//2.2 post請(qǐng)求---傳輸文件流,表單Form Data 數(shù)據(jù)時(shí)
export function getMovieMultidata() {
  return request({
    url:'/api/Movie',
    headers: {
    'Content-Type': 'multipart/form-data';
    },
    method:'post',
    data: {
        userName: 'Lan',
        password: '123'
     }
  })
}

3.vue中使用

在script 標(biāo)簽中按需導(dǎo)入network.js 中需要使用的方法

import {getHomeMultidata} from "network/home/network"; //導(dǎo)入js,路徑自己根據(jù)文件位置設(shè)置

在方法中按照promise的格式調(diào)用函數(shù)即可 

created() {
      // 在方法中調(diào)用函數(shù)即可
        getHomeMultidata().then(
          res => {
          // 此處res 為返回的數(shù)據(jù),將返回的數(shù)據(jù)進(jìn)行處理顯示
            this.banners = res.homedata.slice(0,5)
            this.newestData = res.homedata.slice(5,12)
            
        ).catch(
          err => {
            console.log(err)
          }
        );
    },

network中的其他網(wǎng)絡(luò)請(qǐng)求方法使用方法同上。

vue axios兩種方法(封裝和不封裝)get請(qǐng)求和post請(qǐng)求

沒有封裝的用法

1.首先在項(xiàng)目中下載axios

npm install axios -s //此方法會(huì)將axios下載到package.json中的"dependencies"模塊中,大家可以自行查看

2.因?yàn)闆]有封裝所以需要在單個(gè)vue組件中的編寫js的地方進(jìn)行引用axios;語法如下

<script>
import axios from ?' axios'
</script>

3.然后在生命周期函數(shù)中進(jìn)行調(diào)用數(shù)據(jù)

export default{?
created() {
?
? ? ? //get請(qǐng)求 ? ?
? ? axios.get("url", {
?
? ? ? params: { //此處為get請(qǐng)求傳遞的參數(shù) 但是一把get請(qǐng)求是沒有參數(shù)的 params是固定的
? ? ? ? ? password: "123456",
? ? ? ? ?userName: "320621200305185129",
? ? ? ? },
? ? ? })
? ? ??
?
? ? ?.then(function (response) {
? ? ? ?console.log(response, 666666);
? ? ?})
? ? ?.catch(function (error) {
? ? ? ? console.log(error, 44444);
? ? ? });
? ? ??
? },
}
?
//post請(qǐng)求
axios.post('url', {
//此處是參數(shù)
? ? firstName: 'Fred',
? ? lastName: 'Flintstone'
? })
? .then(function (response) {
? ? console.log(response);
? })
? .catch(function (error) {
? ? console.log(error);
? });

每個(gè)項(xiàng)目的的接口都是不一樣的,很多時(shí)候代碼都不是唯一性的,要靈活的運(yùn)用

封中之后的用法

首先一個(gè)目錄utils,在該目錄下創(chuàng)建request.js 在里面編寫

import axios from 'axios'
export function request(config) {
? // 1.創(chuàng)建axios的實(shí)例
? const instance = axios.create({
? ? // 設(shè)置基礎(chǔ)的url配置項(xiàng),這樣接口處的url前面就不用寫了
?
? ? baseURL: 'http://192.168.0.112:9518/', 基礎(chǔ)代碼
? ? //設(shè)置請(qǐng)求超時(shí)時(shí)間
? ? timeout: 5000?
? })
?
? // 2.axios的攔截器,用不到的可以忽略這節(jié)
? // 2.1.請(qǐng)求攔截的作用
? instance.interceptors.request.use(config => {
? ? return config
? }, err => {
? ? console.log('請(qǐng)求攔截err: '+err);
? })
?
? // 2.2.響應(yīng)攔截
? instance.interceptors.response.use(res => {
? ? return res.data
? }, err => {
? ? ? ? console.log('響應(yīng)攔截err: '+err);
? })
?
? // 3.發(fā)送真正的網(wǎng)絡(luò)請(qǐng)求
? return instance(config)
}

然后在目錄下創(chuàng)建api在此處創(chuàng)建index.js  在此處引用上方創(chuàng)建axios實(shí)例

import {request} from '../utils/request'
//get請(qǐng)求
?
export function denglu() {
? return request({
? ? url: 'login',
? ? method: 'get',
? ? params:{ //此處為傳遞的參數(shù) //get請(qǐng)求一般是不傳遞參數(shù)的
? ? ? ? password:'123456',
? ? ? ? uerName:'5555555555'
? ? }
? ? // header: { // 已經(jīng)在request.js里面進(jìn)行全局設(shè)置,也可以在請(qǐng)求里面局部設(shè)置其他headers
? ? // ? ?'Content-Type': 'text/plain'
? ? // }
? })
}
?//post請(qǐng)求
export function denglu() {
? return request({
? ? url: 'login',
? ? method: 'post',
? ? data:{ //此處為傳遞的參數(shù)
? ? ? ? password:'123456',
? ? ? ? uerName:'5555555555'
? ? }
? ? // header: { // 已經(jīng)在request.js里面進(jìn)行全局設(shè)置,也可以在請(qǐng)求里面局部設(shè)置其他headers
? ? // ? ?'Content-Type': 'text/plain'
? ? // }
? })
}

然后需要在vue組件的中 在編寫js的地方引入index.js

<script>
import denglu from ?"../api/index"
</script>

之后就可以在vue組件方法中進(jìn)行應(yīng)用了,下面是我在vue組件中根據(jù)上面的代碼進(jìn)行應(yīng)用的實(shí)例 

       

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

相關(guān)文章

  • vue中調(diào)用HTTP請(qǐng)求的詳細(xì)步驟

    vue中調(diào)用HTTP請(qǐng)求的詳細(xì)步驟

    這篇文章主要介紹了vue中調(diào)用HTTP請(qǐng)求的詳細(xì)步驟,文中通過代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定幫助,需要的朋友可以參考下
    2024-07-07
  • 關(guān)于vue2響應(yīng)式缺陷的問題

    關(guān)于vue2響應(yīng)式缺陷的問題

    這篇文章主要介紹了關(guān)于vue2響應(yīng)式缺陷的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 最全vue的vue-amap使用高德地圖插件畫多邊形范圍的示例代碼

    最全vue的vue-amap使用高德地圖插件畫多邊形范圍的示例代碼

    這篇文章主要介紹了最全vue的vue-amap使用高德地圖插件畫多邊形范圍,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Vue使用JsonView進(jìn)行JSON數(shù)據(jù)展示

    Vue使用JsonView進(jìn)行JSON數(shù)據(jù)展示

    Vue-JSON-Viewer 是一個(gè)用于在Vue項(xiàng)目中展示JSON數(shù)據(jù)的組件,它解決了在項(xiàng)目開發(fā)中面臨的展示JSON數(shù)據(jù)的需求,下面就跟隨小編一起來了解下它的具體使用吧
    2025-03-03
  • vue基于Vue2.0和高德地圖的地圖組件實(shí)例

    vue基于Vue2.0和高德地圖的地圖組件實(shí)例

    本篇文章主要介紹了vue基于Vue2.0和高德地圖的地圖組件實(shí)例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-04-04
  • 解決vue單頁面修改樣式無法覆蓋問題

    解決vue單頁面修改樣式無法覆蓋問題

    這篇文章主要介紹了vue單頁面修改樣式無法覆蓋問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • vue中使用el-dropdown方式

    vue中使用el-dropdown方式

    這篇文章主要介紹了vue中使用el-dropdown方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue實(shí)現(xiàn)拖拽交換位置

    vue實(shí)現(xiàn)拖拽交換位置

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)拖拽交換位置,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue+element自定義查詢組件

    vue+element自定義查詢組件

    這篇文章主要為大家詳細(xì)介紹了vue+element自定義查詢組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 基于Vue3定制復(fù)雜組件滾動(dòng)條的實(shí)現(xiàn)

    基于Vue3定制復(fù)雜組件滾動(dòng)條的實(shí)現(xiàn)

    這篇文章主要介紹了如何利用vue3定制復(fù)雜組件的滾動(dòng)條,文中通過示例代碼講解詳細(xì),需要的朋友們下面就跟隨小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評(píng)論

普宁市| 赫章县| 来宾市| 枣庄市| 文昌市| 钟祥市| 罗田县| 潞城市| 建水县| 郁南县| 正蓝旗| 望都县| 镇安县| 涪陵区| 丰县| 澎湖县| 忻城县| 永年县| 平谷区| 金堂县| 枣强县| 吴川市| 成安县| 临江市| 谷城县| 林周县| 南通市| 鲁山县| 五莲县| 灵山县| 始兴县| 南充市| 甘肃省| 砚山县| 温泉县| 武川县| 宁河县| 河西区| 哈密市| 吉首市| 阳新县|