99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于OpenHarmony API9的axios組件介紹

OpenAtom OpenHarmony ? 來源:OpenAtom OpenHarmony ? 作者:OpenAtom OpenHarmony ? 2022-08-19 15:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

什么是axios

上古瀏覽器頁面在向服務(wù)器請求數(shù)據(jù)時,因為返回的是整個頁面的數(shù)據(jù),頁面都會強(qiáng)制刷新一下,這對于用戶來講并不是很友好。并且我們只是需要修改頁面的部分?jǐn)?shù)據(jù),但是從服務(wù)器端發(fā)送的卻是整個頁面的數(shù)據(jù),十分消耗網(wǎng)絡(luò)資源。而我們只是需要刷新頁面的部分?jǐn)?shù)據(jù),并不希望刷新整個頁面。于是一種新的技術(shù),異步網(wǎng)絡(luò)請求Ajax(Asynchronous JavaScript and XML)隨之產(chǎn)生,它能與后臺服務(wù)器進(jìn)行少量數(shù)據(jù)交換,使網(wǎng)頁實現(xiàn)異步更新。這意味著可以在不重載整個頁面的情況下,對網(wǎng)頁的某些部分進(jìn)行更新。

然而由于瀏覽器中原生的XMLHttpRequest API較難使用,于是又有了更多用于實現(xiàn)ajax的javascript框架,比如我們熟悉的jQuery、Dojo、YUI等等。而如今一個叫axios的輕量框架逐步脫穎而出,目前在github的戰(zhàn)績已經(jīng)達(dá)到了Fork9.6k+和Star94k+,它本質(zhì)上也是對原生XHR的封裝,只不過它是Promise的實現(xiàn)版本,符合最新的ES規(guī)范,有以下特點:

● 從瀏覽器中創(chuàng)建 XMLHttpRequests

● 從 node.js 創(chuàng)建 http 請求

● 支持 Promise API

● 攔截請求和響應(yīng)

● 轉(zhuǎn)換請求數(shù)據(jù)和響應(yīng)數(shù)據(jù)

● 取消請求

● 自動轉(zhuǎn)換 JSON 數(shù)據(jù)

OpenHarmony應(yīng)用中使用axios

我們可以看到axios既可以在瀏覽器中使用,又可以在Nodejs中使用,而如今隨著OpenHarmony ArkUI的發(fā)展,axios又有了新的用武之地,即在OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的應(yīng)用中使用:可用于網(wǎng)絡(luò)請求和上傳下載文件,并完全繼承axios原生的用法和所有特性。

對,你沒有看錯,axios確實是可以在OpenHarmony上使用了。下面簡單介紹下,如何在OpenHarmony應(yīng)用中使用axios。

第一步:

在OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的應(yīng)用中下載安裝OpenHarmony axios三方組件。

npm install @ohos/axios –save

OpenHarmony npm環(huán)境配置等更多內(nèi)容,參考安裝教程 如何安裝OpenHarmony npm包。

(https://gitee.com/openharmony-tpc/docs/blob/master/OpenHarmony_npm_usage.md)

第二步:

在頁面中,引入axios。

import axios from "@ohos/axios";

第三步:

axios既可以當(dāng)做函數(shù)直接使用發(fā)起異步請求,也可以當(dāng)做對象,使用其get/post方法發(fā)起異步請求

作為函數(shù)直接發(fā)起post請求,通過promise獲取請求結(jié)果。

    let url = 'http://www.xxx.xxx';    axios({      method: "post",      url: url,      data:{        catalogName: "doc-references",        language: "cn",        objectId: "js-apis-net-http-0000001168304341",      }    })      .then(res => {        console.info('post result:' +JSON.stringify(res.data.value.breadUrl))      })      .catch(error => {        console.info('post error!')})
作為對象,使用其get/post方法發(fā)起異步請求

const test= axios.create({(                            baseURL:'http://xxxx'});test.get('/xxxx').then(response=>{})

axios攔截器

一般在使用axios時,會用到攔截器的功能,一般分為兩種:請求攔截器、響應(yīng)攔截器。

● 請求攔截器 在請求發(fā)送前進(jìn)行必要操作處理,例如添加統(tǒng)一cookie、請求體加驗證、設(shè)置請求頭等,相當(dāng)于是對每個接口里相同操作的一個封裝;

● 響應(yīng)攔截器 同理,響應(yīng)攔截器也是如此功能,只是在請求得到響應(yīng)之后,對響應(yīng)體的一些處理,通常是數(shù)據(jù)統(tǒng)一處理等,也常來判斷登錄失效等。

fa3d20d8-1f7f-11ed-ba43-dac502259ad0.png

axios的攔截器作用非常大。axios的攔截器分為請求攔截器跟響應(yīng)攔截器,都是可以設(shè)置多個請求或者響應(yīng)攔截。每個攔截器都可以設(shè)置兩個攔截函數(shù),一個為成功攔截,一個為失敗攔截。在調(diào)用axios.request()之后,請求的配置會先進(jìn)入請求攔截器中,正常可以一直執(zhí)行成功攔截函數(shù),如果有異常會進(jìn)入失敗攔截函數(shù),并不會發(fā)起請求;調(diào)起請求響應(yīng)返回后,會根據(jù)響應(yīng)信息進(jìn)入響應(yīng)成功攔截函數(shù)或者響應(yīng)失敗攔截函數(shù)。

舉個例子

1.添加請求攔截器

axios.interceptors.request.use(function (config) {    // 在發(fā)送請求之前做些什么    return config;  }, function (error) {    // 對請求錯誤做些什么    return Promise.reject(error);});
2.添加響應(yīng)攔截器

axios.interceptors.response.use(function (response) {    // 對響應(yīng)數(shù)據(jù)做點什么    return response;  }, function (error) {    // 對響應(yīng)錯誤做點什么    return Promise.reject(error);});

axios上傳下載文件

使用axios還可以在OpenHarmony中上傳和下載文件,并獲取到上傳和下載的進(jìn)度。

上傳文件:

import  axios from '@ohos/axios'import { FormData } from '@ohos/axios'
var formData = new FormData()formData.append('file', 'internal://cache/blue.jpg')
// 發(fā)送請求axios.post('http://www.xxx.com/upload', formData, {   headers: { 'Content-Type': 'multipart/form-data' },   context: getContext(this),   onUploadProgress number, total:number):void=> {      console.info(Math.ceil(uploadedSize/total * 100) + '%');   },}).then((res) => {   console.info("result" + JSON.stringify(res.data));}).catch(error => {   console.error("error:" + JSON.stringify(error));})
下載文件:

axios({   url: 'http://www.xxx.com/blue.jpg',   method: 'get',   context: getContext(this),   filePath: filePath ,   onDownloadProgress:  (receivedSize: number, total:number):void=> {       console.info(Math.ceil( receivedSize/total * 100 ) + '%');   },   }).then((res)=>{      console.info("result: " + JSON.stringify(res.data));   }).catch((error)=>{=      console.error(t"error:" + JSON.stringify(error));})
除以上特性之外,axios的默認(rèn)配置,取消請求等特性都是可以在OpenHarmony上繼續(xù)使用的哈。另外,從npm官網(wǎng)上,可以看到有8000+的三方組件依賴axios,現(xiàn)在axios支持OpenHarmony后,更多的三方組件也將能在OpenHarmony上跑起來。

如何移植axios到OpenHarmony上運行的?

介紹了這么多axios的用法,相信前端的axios老粉們已經(jīng)迫不及待地去體驗了吧。但是也許你會好奇,axios為啥能在OpenHarmony上運行?它不只是支持瀏覽器和Nodejs嗎?

這塊深入解讀的話,需要了解axios框架的實現(xiàn)原理。簡單來說,ohos/axios依賴開源社區(qū)axios三方組件,并根據(jù)axios現(xiàn)有的框架實現(xiàn)了ohadapter,即在OpenHarmony中適配網(wǎng)絡(luò)調(diào)用,對外暴露axios的原有對象,因此可以保障axios的api及特性都完全繼承。大家可以進(jìn)一步到openharmony-tpc看下其源碼的實現(xiàn)。

如下圖,右邊藍(lán)色的是原生axios的開源社區(qū),左邊綠色的是OpenHarmony axios三方組件,僅僅是實現(xiàn)了一個OpenHarmony的適配模塊,并未修改原生社區(qū)的一行代碼。

fa62970a-1f7f-11ed-ba43-dac502259ad0.png

總結(jié)

本期基于OpenHarmony API9的axios組件就為大家介紹到這,其源碼已開源在了“https://gitee.com/openharmony-sig/axios”,歡迎大家使用和提Issue。了解更多三方組件動態(tài),請關(guān)注三方組件資源匯總,更多優(yōu)秀的組件等你來發(fā)現(xiàn)!

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 瀏覽器
    +關(guān)注

    關(guān)注

    1

    文章

    1040

    瀏覽量

    36310
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4381

    瀏覽量

    64898
  • OpenHarmony
    +關(guān)注

    關(guān)注

    29

    文章

    3854

    瀏覽量

    18628

原文標(biāo)題:網(wǎng)絡(luò)組件axios可以在OpenHarmony上使用了

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    鴻蒙開發(fā)實戰(zhàn):網(wǎng)絡(luò)請求庫【axios

    [Axios]?,是一個基于 promise 的網(wǎng)絡(luò)請求庫,可以運行 node.js 和瀏覽器中。本庫基于[Axios]原庫v1.3.4版本進(jìn)行適配,使其可以運行在 OpenHarmony,并沿用其現(xiàn)有用法和特性。
    的頭像 發(fā)表于 03-25 16:47 ?4500次閱讀
    鴻蒙開發(fā)實戰(zhàn):網(wǎng)絡(luò)請求庫【<b class='flag-5'>axios</b>】

    鴻蒙開發(fā)API9API12,有哪些不同

    “分水嶺”,后續(xù)的API版本對于目前的畢設(shè)來說提升并不大,目前畢設(shè)的話,API12已經(jīng)夠用了。 介紹一些兩者的較為關(guān)鍵的區(qū)別: 一、開發(fā)工具版本 API9的開發(fā)工具現(xiàn)在官網(wǎng)已經(jīng)下載不到
    發(fā)表于 06-29 22:47

    在DevEco Studio上使用OpenHarmony API9 SDK的教程

    。選擇項目為OpenHarmony,分支為OpenHarmony-3.1-API9-SDK-Canary。 2、選擇所需要類型的SDK的全量包下載 二、將下載到的SDK目錄結(jié)構(gòu)改造為符合Deveco
    發(fā)表于 04-20 11:05

    OpenHarmony SDK只支持API8和API9嗎?

    1、OpenHarmony SDK api版本只支持8和9么,真機(jī)是6種情況是不是不能使用openharmony調(diào)試了呢?2、HarmonyOS Legacy SDK 與
    發(fā)表于 04-26 10:57

    HarmonyOS和OpenHarmony的DevEco兩種IDE如何共存?

      用于 HarmonyOS 的 DevEco 和用于 OpenHarmony 的 DevEco 兩種IDE如何共存?  我用的是MacOS,不能同時安裝這兩個IDE,想現(xiàn)鮮API9就可以繼續(xù)開發(fā),想繼續(xù)開發(fā)Harmony OS應(yīng)用程序,只需安裝一個版本,然后可以共存,這
    發(fā)表于 05-09 11:07

    網(wǎng)絡(luò)組件axios可以在OpenHarmony上使用了

    模塊,并未修改原生社區(qū)的一行代碼??偨Y(jié)本期基于OpenHarmony API9axios組件就為大家介紹到這,其源碼已開源在了“https
    發(fā)表于 08-29 12:11

    HarmonyOS/OpenHarmony應(yīng)用開發(fā)-HUAWEI DevEco Studio 3.1API9集成SDK

    說明:適用api9及以上前提條件?安裝HUAWEI DevEco Studio 3.1及以上版本?配置 SDK API Version 9及以上?Compile SDK Version 9
    發(fā)表于 03-27 10:06

    OpenHarmony組件復(fù)用示例

    承載數(shù)據(jù)的差異。這樣的組件緩存起來,需要使用到該組件時直接復(fù)用, ● 減少了創(chuàng)建和渲染的時間,可以提高幀率和用戶性能體驗。本文會介紹開發(fā)OpenHarmony應(yīng)用時如何使用
    發(fā)表于 08-29 14:40

    HarmonyOS/OpenHarmony原生應(yīng)用開發(fā)-華為Serverless服務(wù)支持情況(三)

    文檔中的TS作者認(rèn)為就是ArkTS之意。 一、云函數(shù),從開發(fā)文檔上已經(jīng)說明,是已經(jīng)支持HarmonyOS/OpenHarmony(Stage模型-API9),但是在開發(fā)語言上,沒有ArkTS,是否
    發(fā)表于 10-12 14:43

    HarmonyOS/OpenHarmony原生應(yīng)用開發(fā)-華為Serverless服務(wù)支持情況(四)

    /OpenHarmony(Stage模型-API9)應(yīng)用開發(fā)的。 文檔地址: https://developer.huawei.com/consumer/cn/doc/development
    發(fā)表于 10-16 14:20

    2022 OpenHarmony組件大賽,共建開源組件

    原標(biāo)題:共建開源組件生態(tài) 2022 OpenHarmony組件大賽等你來 2022年4月15日,2022 OpenHarmony組件大賽(下
    的頭像 發(fā)表于 04-26 17:31 ?1763次閱讀
    2022 <b class='flag-5'>OpenHarmony</b><b class='flag-5'>組件</b>大賽,共建開源<b class='flag-5'>組件</b>

    OpenHarmony PhotoView組件介紹

    PhotoView是OpenAtom OpenHarmony(簡稱“OpenHarmony”)系統(tǒng)的一款圖片縮放及瀏覽的三方組件,用于聲明式應(yīng)用開發(fā),支持圖片縮放、平移、旋轉(zhuǎn)等功能。
    的頭像 發(fā)表于 09-09 10:04 ?1456次閱讀

    關(guān)于OpenHarmony Jchardet組件介紹

    Jchardet是OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)系統(tǒng)的一款檢測文本編碼的組件。當(dāng)上傳一個文件時,組件可以檢測并輸出該文件中文本使用的編碼
    的頭像 發(fā)表于 10-12 10:08 ?1374次閱讀

    OpenHarmony:使用網(wǎng)絡(luò)組件axios與Spring Boot進(jìn)行前后端交互

    這兩個函數(shù)是使用axios庫發(fā)起HTTP GET請求的函數(shù),用于與服務(wù)器進(jìn)行通信
    的頭像 發(fā)表于 01-22 17:35 ?1055次閱讀
    <b class='flag-5'>OpenHarmony</b>:使用網(wǎng)絡(luò)<b class='flag-5'>組件</b><b class='flag-5'>axios</b>與Spring Boot進(jìn)行前后端交互

    基于ArkTS語言的OpenHarmony APP應(yīng)用開發(fā):HelloOpenharmony

    1、程序簡介該程序是基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)編寫的UI應(yīng)用類:HelloOpenHarmony。本案例是基于API9接口開發(fā)。本案例已在OpenHarmony凌蒙派-RK35
    的頭像 發(fā)表于 09-15 08:09 ?880次閱讀
    基于ArkTS語言的<b class='flag-5'>OpenHarmony</b> APP應(yīng)用開發(fā):Hello<b class='flag-5'>Openharmony</b>