一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

● 支持 Promise API

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

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

● 取消請求

● 自動(dòng)轉(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原生的用法和所有特性。

對,你沒有看錯(cuò),axios確實(shí)是可以在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時(shí),會用到攔截器的功能,一般分為兩種:請求攔截器、響應(yīng)攔截器。

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

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

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

axios的攔截器作用非常大。axios的攔截器分為請求攔截器跟響應(yīng)攔截器,都是可以設(shè)置多個(gè)請求或者響應(yīng)攔截。每個(gè)攔截器都可以設(shè)置兩個(gè)攔截函數(shù),一個(gè)為成功攔截,一個(gè)為失敗攔截。在調(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ù)。

舉個(gè)例子

1.添加請求攔截器

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

axios.interceptors.response.use(function (response) {    // 對響應(yīng)數(shù)據(jù)做點(diǎn)什么    return response;  }, function (error) {    // 對響應(yīng)錯(cuò)誤做點(diǎn)什么    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上運(yùn)行的?

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

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

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

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

總結(jié)

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

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

    關(guān)注

    1

    文章

    1040

    瀏覽量

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

    關(guān)注

    3

    文章

    4381

    瀏覽量

    64884
  • OpenHarmony
    +關(guān)注

    關(guān)注

    29

    文章

    3854

    瀏覽量

    18615

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

    [Axios]?,是一個(gè)基于 promise 的網(wǎng)絡(luò)請求庫,可以運(yùn)行 node.js 和瀏覽器中。本庫基于[Axios]原庫v1.3.4版本進(jìn)行適配,使其可以運(yùn)行在 OpenHarmony,并沿用其現(xiàn)有用法和特性。
    的頭像 發(fā)表于 03-25 16:47 ?4499次閱讀
    鴻蒙開發(fā)實(shí)戰(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的教程

    。選擇項(xiàng)目為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,不能同時(shí)安裝這兩個(gè)IDE,想現(xiàn)鮮API9就可以繼續(xù)開發(fā),想繼續(xù)開發(fā)Harmony OS應(yīng)用程序,只需安裝一個(gè)版本,然后可以共存,這
    發(fā)表于 05-09 11:07

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

    模塊,并未修改原生社區(qū)的一行代碼。總結(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ù)的差異。這樣的組件緩存起來,需要使用到該組件時(shí)直接復(fù)用, ● 減少了創(chuàng)建和渲染的時(shí)間,可以提高幀率和用戶性能體驗(yàn)。本文會介紹開發(fā)OpenHarmony應(yīng)用時(shí)如何使用
    發(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)上傳一個(gè)文件時(shí),組件可以檢測并輸出該文件中文本使用的編碼
    的頭像 發(fā)表于 10-12 10:08 ?1371次閱讀

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

    這兩個(gè)函數(shù)是使用axios庫發(fā)起HTTP GET請求的函數(shù),用于與服務(wù)器進(jìn)行通信
    的頭像 發(fā)表于 01-22 17:35 ?1054次閱讀
    <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 ?875次閱讀
    基于ArkTS語言的<b class='flag-5'>OpenHarmony</b> APP應(yīng)用開發(fā):Hello<b class='flag-5'>Openharmony</b>