首頁 web前端 前端問答 vue的axios是做什麼的

vue的axios是做什麼的

Mar 03, 2022 pm 05:29 PM
axios vue

在vue中,axios是一個基於promise的HTTP庫,主要用於實現AJAX非同步通訊功能;axios可以在瀏覽器中發送XMLHttpRequests請求,可以在nodejs中發送http請求,也可以攔截請求和回應、轉換請求和回應資料。

vue的axios是做什麼的

本教學操作環境:windows7系統、vue2.9.6版,DELL G3電腦。

axios:前端通訊框架,因為vue的邊界很明確,就是為了處理DOM,所以並不具備通訊功能,此時就需要額外使用一個通訊框架與伺服器互動;當然也可以使用jQuery提供的AJAX通訊功能。

vue的axios是做什麼的

Axios是基於 promise 的 HTTP 函式庫,簡單的講就是可以傳送get、post請求。

說到get、post,大家應該第一時間想到的就是Jquery吧,畢竟前幾年Jquery比較火紅的時候,大家都在用他。但由於Vue、React等框架的出現,Jquery也不是那麼吃香了。也正是Vue、React等框架的出現,促使了Axios輕量級函式庫的出現,因為Vue等,不需要操作Dom,所以不需要引進Jquery.js了。

Axios特性

1、可以在瀏覽器中傳送XMLHttpRequests

2、可以在node.js 發送http 請求

3、支援Promise API

4、攔截請求和回應

5、轉換請求資料和回應資料

6、能夠取消請求

7 、自動轉換JSON 資料

8、客戶端支援保護安全性免受XSRF 攻擊

Axios用在什麼場景?

在功能裡面已經有提到,瀏覽器發送請求,或者Node.js發送請求都可以用到Axios。像是Vue、React、Node等專案就可以使用Axios,如果你的專案裡面用了Jquery,此時就不需要多此一舉了,jquery裡面本身就可以發送請求。

Axios如何使用?

安裝模組

npm install axios
登入後複製

或直接引入

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
登入後複製

引入模組後可以直接使用

範例(一)

// GET
axios.get(&#39;/user&#39;, {
  params: {
    ID: 12345
  }
})
.then(function (response) {
  console.log(response);
})
.catch(function (error) {
  console.log(error);
});
// POST
axios.post(&#39;/user&#39;, {
  name: &#39;Javan&#39;,
  website: &#39;www.javanx.cn&#39;
})
.then(function (response) {
  console.log(response);
})
.catch(function (error) {
  console.log(error);
});
登入後複製

上面的參數是可選的

如果你想並發多個請求,可以看下方程式碼

function getUserAccount() {
  return axios.get(&#39;/user/12345&#39;);
}
function getUserPermissions() {
  return axios.get(&#39;/user/12345/permissions&#39;);
}
axios.all([getUserAccount(), getUserPermissions()])
  .then(axios.spread(function (acct, perms) {
    // 两个请求都执行完成才会执行
  }));
登入後複製

範例(二)

除了上面的方式外,你可以透過向axios 傳遞相關配置來建立請求,例如:

// POST
axios({
  method: &#39;post&#39;,
  url: &#39;/user/12345&#39;,
  data: {
    firstName: &#39;Fred&#39;,
    lastName: &#39;Flintstone&#39;
  }
});
登入後複製

語法

axios(url[, config])
登入後複製

config

{
  // `url` 是用于请求的服务器 URL
  url: &#39;/user&#39;,
  // `method` 是创建请求时使用的方法
  method: &#39;get&#39;, // 默认是 get
  // `baseURL` 将自动加在 `url` 前面,除非 `url` 是一个绝对 URL。
  // 它可以通过设置一个 `baseURL` 便于为 axios 实例的方法传递相对 URL
  baseURL: &#39;https://some-domain.com/api/&#39;,
  // `transformRequest` 允许在向服务器发送前,修改请求数据
  // 只能用在 &#39;PUT&#39;, &#39;POST&#39; 和 &#39;PATCH&#39; 这几个请求方法
  // 后面数组中的函数必须返回一个字符串,或 ArrayBuffer,或 Stream
  transformRequest: [function (data) {
    // 对 data 进行任意转换处理
    return data;
  }],
  // `transformResponse` 在传递给 then/catch 前,允许修改响应数据
  transformResponse: [function (data) {
    // 对 data 进行任意转换处理
    return data;
  }],
  // `headers` 是即将被发送的自定义请求头
  headers: {&#39;X-Requested-With&#39;: &#39;XMLHttpRequest&#39;},
  // `params` 是即将与请求一起发送的 URL 参数
  // 必须是一个无格式对象(plain object)或 URLSearchParams 对象
  params: {
    ID: 12345
  },
  // `paramsSerializer` 是一个负责 `params` 序列化的函数
  // (e.g. https://www.npmjs.com/package/qs, http://api.jquery.com/jquery.param/)
  paramsSerializer: function(params) {
    return Qs.stringify(params, {arrayFormat: &#39;brackets&#39;})
  },
  // `data` 是作为请求主体被发送的数据
  // 只适用于这些请求方法 &#39;PUT&#39;, &#39;POST&#39;, 和 &#39;PATCH&#39;
  // 在没有设置 `transformRequest` 时,必须是以下类型之一:
  // - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams
  // - 浏览器专属:FormData, File, Blob
  // - Node 专属: Stream
  data: {
    firstName: &#39;Fred&#39;
  },
  // `timeout` 指定请求超时的毫秒数(0 表示无超时时间)
  // 如果请求话费了超过 `timeout` 的时间,请求将被中断
  timeout: 1000,
  // `withCredentials` 表示跨域请求时是否需要使用凭证
  withCredentials: false, // 默认的
  // `adapter` 允许自定义处理请求,以使测试更轻松
  // 返回一个 promise 并应用一个有效的响应 (查阅 [response docs](#response-api)).
  adapter: function (config) {
    /* ... */
  },
  // `auth` 表示应该使用 HTTP 基础验证,并提供凭据
  // 这将设置一个 `Authorization` 头,覆写掉现有的任意使用 `headers` 设置的自定义 `Authorization`头
  auth: {
    username: &#39;janedoe&#39;,
    password: &#39;s00pers3cret&#39;
  },
  // `responseType` 表示服务器响应的数据类型,可以是 &#39;arraybuffer&#39;, &#39;blob&#39;, &#39;document&#39;, &#39;json&#39;, &#39;text&#39;, &#39;stream&#39;
  responseType: &#39;json&#39;, // 默认的
  // `xsrfCookieName` 是用作 xsrf token 的值的cookie的名称
  xsrfCookieName: &#39;XSRF-TOKEN&#39;, // default
  // `xsrfHeaderName` 是承载 xsrf token 的值的 HTTP 头的名称
  xsrfHeaderName: &#39;X-XSRF-TOKEN&#39;, // 默认的
  // `onUploadProgress` 允许为上传处理进度事件
  onUploadProgress: function (progressEvent) {
    // 对原生进度事件的处理
  },
  // `onDownloadProgress` 允许为下载处理进度事件
  onDownloadProgress: function (progressEvent) {
    // 对原生进度事件的处理
  },
  // `maxContentLength` 定义允许的响应内容的最大尺寸
  maxContentLength: 2000,
  // `validateStatus` 定义对于给定的HTTP 响应状态码是 resolve 或 reject  promise 。如果 `validateStatus` 返回 `true` (或者设置为 `null` 或 `undefined`),promise 将被 resolve; 否则,promise 将被 rejecte
  validateStatus: function (status) {
    return status >= 200 && status < 300; // 默认的
  },
  // `maxRedirects` 定义在 node.js 中 follow 的最大重定向数目
  // 如果设置为0,将不会 follow 任何重定向
  maxRedirects: 5, // 默认的
  // `httpAgent` 和 `httpsAgent` 分别在 node.js 中用于定义在执行 http 和 https 时使用的自定义代理。允许像这样配置选项:
  // `keepAlive` 默认没有启用
  httpAgent: new http.Agent({ keepAlive: true }),
  httpsAgent: new https.Agent({ keepAlive: true }),
  // &#39;proxy&#39; 定义代理服务器的主机名称和端口
  // `auth` 表示 HTTP 基础验证应当用于连接代理,并提供凭据
  // 这将会设置一个 `Proxy-Authorization` 头,覆写掉已有的通过使用 `header` 设置的自定义 `Proxy-Authorization` 头。
  proxy: {
    host: &#39;127.0.0.1&#39;,
    port: 9000,
    auth: : {
      username: &#39;mikeymike&#39;,
      password: &#39;rapunz3l&#39;
    }
  },
  // `cancelToken` 指定用于取消请求的 cancel token
  // (查看后面的 Cancellation 这节了解更多)
  cancelToken: new CancelToken(function (cancel) {
  })
}
登入後複製

範例(三)

我們也可以使用自訂設定新建一個axios 實例,並且可以在請求或回應被then 或catch 處理前攔截它們。

// 如文件名叫http.js
import axios from &#39;axios&#39;
// 创建实例时设置配置的默认值
var instance = axios.create({
  baseURL: &#39;https://some-domain.com/api/&#39;,
  timeout: 1000,
  headers: {&#39;X-Custom-Header&#39;: &#39;foobar&#39;}
});
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  /**
    1、比如添加token之类的请求头信息
    2、添加每次请求loading等
  */
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});
// 添加响应拦截器
instance.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  /**
    1、集中处理响应数据(如错误码处理)
  */
  return response;
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error);
});
export default instance
登入後複製

如何使用上面的http.js???

import http from &#39;xxx/http&#39;
http({
  method: &#39;POST&#39;,
  url: &#39;/user&#39;,
  data: {
    name: &#39;Javan&#39;,
    website: &#39;www.javanx.cn&#39;
  }
}).then((response) => {
  // 200响应
}, (err) => {
  // 500响应
})
登入後複製

#範例(四)

如何取消介面? ? ?

場景:一個搜尋框,每次輸入字元都會調用接口,這時候沒有辦法來知道那個接口資料放回是最後一次的,只能取消之前發起的相同接口,所以就有了取消接口。

var CancelToken = axios.CancelToken;
var source = CancelToken.source();
axios.get(&#39;/user/12345&#39;, {
  cancelToken: source.token
}).catch(function(thrown) {
  if (axios.isCancel(thrown)) {
    console.log(&#39;Request canceled&#39;, thrown.message);
  } else {
    // 处理错误
  }
});
// 取消请求(message 参数是可选的)
source.cancel(&#39;Operation canceled by the user.&#39;);
登入後複製

總結

Axios可以說把請求這件事做到了極致,封裝的很好用,目前下載次數:4,784,599次,github star:60,584次。足矣說明開發者們還是很喜歡他的。瀏覽器支援方法,除了IE低版本以外,最新版的瀏覽器都是支援的。

(學習影片分享:vuejs教學web前端

以上是vue的axios是做什麼的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1677
14
CakePHP 教程
1431
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
vue中怎麼用bootstrap vue中怎麼用bootstrap Apr 07, 2025 pm 11:33 PM

在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

vue怎麼給按鈕添加函數 vue怎麼給按鈕添加函數 Apr 08, 2025 am 08:51 AM

可以通過以下步驟為 Vue 按鈕添加函數:將 HTML 模板中的按鈕綁定到一個方法。在 Vue 實例中定義該方法並編寫函數邏輯。

vue中的watch怎麼用 vue中的watch怎麼用 Apr 07, 2025 pm 11:36 PM

Vue.js 中的 watch 選項允許開發者監聽特定數據的變化。當數據發生變化時,watch 會觸發一個回調函數,用於執行更新視圖或其他任務。其配置選項包括 immediate,用於指定是否立即執行回調,以及 deep,用於指定是否遞歸監聽對像或數組的更改。

vue返回上一頁的方法 vue返回上一頁的方法 Apr 07, 2025 pm 11:30 PM

Vue.js 返回上一頁有四種方法:$router.go(-1)$router.back()使用 &lt;router-link to=&quot;/&quot;&gt; 組件window.history.back(),方法選擇取決於場景。

vue多頁面開發是啥意思 vue多頁面開發是啥意思 Apr 07, 2025 pm 11:57 PM

Vue 多頁面開發是一種使用 Vue.js 框架構建應用程序的方法,其中應用程序被劃分為獨立的頁面:代碼維護性:將應用程序拆分為多個頁面可以使代碼更易於管理和維護。模塊化:每個頁面都可以作為獨立的模塊,便於重用和替換。路由簡單:頁面之間的導航可以通過簡單的路由配置來管理。 SEO 優化:每個頁面都有自己的 URL,這有助於搜索引擎優化。

React與Vue:Netflix使用哪個框架? React與Vue:Netflix使用哪個框架? Apr 14, 2025 am 12:19 AM

NetflixusesAcustomFrameworkcalled“ Gibbon” BuiltonReact,notReactorVuedIrectly.1)TeamSperience:selectBasedonFamiliarity.2)ProjectComplexity:vueforsimplerprojects:reactforforforproproject,reactforforforcompleplexones.3)cocatizationneedneeds:reactoffipicatizationneedneedneedneedneedneeds:reactoffersizationneedneedneedneedneeds:reactoffersizatization needefersmoreflexibleise.4)

vue遍歷怎麼用 vue遍歷怎麼用 Apr 07, 2025 pm 11:48 PM

Vue.js 遍歷數組和對像有三種常見方法:v-for 指令用於遍歷每個元素並渲染模板;v-bind 指令可與 v-for 一起使用,為每個元素動態設置屬性值;.map 方法可將數組元素轉換為新數組。

vue.js怎麼引用js文件 vue.js怎麼引用js文件 Apr 07, 2025 pm 11:27 PM

在 Vue.js 中引用 JS 文件的方法有三種:直接使用 &lt;script&gt; 標籤指定路徑;利用 mounted() 生命週期鉤子動態導入;通過 Vuex 狀態管理庫進行導入。

See all articles