鴻蒙中Axios數(shù)據(jù)請(qǐng)求的封裝和配置方法
適用于(HarmonyOS NEXT/5.0/API12+)
1.配置權(quán)限 應(yīng)用級(jí)權(quán)限和系統(tǒng)級(jí)權(quán)限

2.配置網(wǎng)絡(luò)請(qǐng)求的代碼
"requestPermissions": [
{ "name": "ohos.permission.INTERNET" }
],3.下載在Entry中 下載Axios
//終端中運(yùn)行
ohpm install @ohos/axios
4.封裝Http請(qǐng)求
實(shí)現(xiàn)思路:
//1.創(chuàng)建AXIOS的實(shí)例對(duì)象
//配置基地址,超時(shí)時(shí)間
//2.配置請(qǐng)求攔截器
//3.配置響應(yīng)攔截器
//4.封裝Htpp類
//5.創(chuàng)建并導(dǎo)出 http實(shí)例對(duì)象
//6.統(tǒng)一導(dǎo)出
import axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from "@ohos/axios"
import { logger } from "./Logger"
const baseURL = 'https://api-harmony-teach.itheima.net'
//1.創(chuàng)建AXIOS的實(shí)例對(duì)象
//配置基地址,超時(shí)時(shí)間
//create 創(chuàng)建一個(gè)新的Axios對(duì)象 可以多個(gè)接口使用
export const instance =axios.create({
baseURL,
timeout:6000
})
//2.配置請(qǐng)求攔截器 (前端給后端的東西)
instance.interceptors.request.use((config:InternalAxiosRequestConfig)=>{
const user = auth.getUser()
if(user.token){
config.headers.Authorization = `Bearer ${ user.token}`
}
return config
},(err: AxiosError) => {
logger.error('Req Error', JSON.stringify(err))
return Promise.reject(err)
})
//3.配置響應(yīng)攔截器 后端給前端的東西
// instance.interceptors.response.use(()=>{成功} ,()=>{失敗})
//攔截器interceptors
//response通常指的是網(wǎng)絡(luò)請(qǐng)求的響應(yīng)。這是一個(gè)結(jié)構(gòu)體,用于封裝服務(wù)器返回的信息,
//AxiosResponse是Axios庫(kù)中的一個(gè)接口,用于表示HTTP響應(yīng)。以便開(kāi)發(fā)者可以輕松地訪問(wèn)響應(yīng)的各個(gè)部分。
instance.interceptors.response.use((res: AxiosResponse) => {
//成功
if (res.data.code === 10000) {
logger.debug('Req Success', JSON.stringify(res.data.data))
return res.data.data
}
//請(qǐng)求成功,回傳是錯(cuò)誤的
logger.error('Req Error', JSON.stringify(res.data))
return Promise.reject(res.data)
}, (err: AxiosError) => {
//失敗返回的錯(cuò)誤
logger.error('Req Error', JSON.stringify(err))
return Promise.reject(err)
})
//4.封裝Htpp類
// 提供request方法
class Http {
// Get 請(qǐng)求可以省略第二個(gè)泛型,因?yàn)閍xios默認(rèn)是any任何值可傳
//ResponseData 響應(yīng)數(shù)據(jù)類型 返回的數(shù)據(jù)(響應(yīng)回來(lái)的數(shù)據(jù))
//RequestData 請(qǐng)求數(shù)據(jù)類型 請(qǐng)求攜帶的參數(shù)
//Object 給個(gè)默認(rèn)值 有的是入?yún)?
//AxiosResponse是Axios庫(kù)中的一個(gè)接口,用于表示HTTP響應(yīng)。以便開(kāi)發(fā)者可以輕松地訪問(wèn)響應(yīng)的各個(gè)部分。
// request<T,D>
//T是自己的,D是請(qǐng)求得到
request<ResponseData, RequestData = Object>(config: AxiosRequestConfig<RequestData>) {
return instance<null, ResponseData, RequestData>(config)
}
}
//5.創(chuàng)建并導(dǎo)出 http實(shí)例對(duì)象
export const http = new Http()5.頁(yè)面中使用
import axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from "@ohos/axios"
import { logger } from "./Logger"
const baseURL = 'https://api-harmony-teach.itheima.net'
//1.創(chuàng)建AXIOS的實(shí)例對(duì)象
//配置基地址,超時(shí)時(shí)間
//create 創(chuàng)建一個(gè)新的Axios對(duì)象 可以多個(gè)接口使用
export const instance =axios.create({
baseURL,
timeout:6000
})
//2.配置請(qǐng)求攔截器 (前端給后端的東西)
instance.interceptors.request.use((config:InternalAxiosRequestConfig)=>{
const user = auth.getUser()
if(user.token){
config.headers.Authorization = `Bearer ${ user.token}`
}
return config
},(err: AxiosError) => {
logger.error('Req Error', JSON.stringify(err))
return Promise.reject(err)
})
//3.配置響應(yīng)攔截器 后端給前端的東西
// instance.interceptors.response.use(()=>{成功} ,()=>{失敗})
//攔截器interceptors
//response通常指的是網(wǎng)絡(luò)請(qǐng)求的響應(yīng)。這是一個(gè)結(jié)構(gòu)體,用于封裝服務(wù)器返回的信息,
//AxiosResponse是Axios庫(kù)中的一個(gè)接口,用于表示HTTP響應(yīng)。以便開(kāi)發(fā)者可以輕松地訪問(wèn)響應(yīng)的各個(gè)部分。
instance.interceptors.response.use((res: AxiosResponse) => {
//成功
if (res.data.code === 10000) {
logger.debug('Req Success', JSON.stringify(res.data.data))
return res.data.data
}
//請(qǐng)求成功,回傳是錯(cuò)誤的
logger.error('Req Error', JSON.stringify(res.data))
return Promise.reject(res.data)
}, (err: AxiosError) => {
//失敗返回的錯(cuò)誤
logger.error('Req Error', JSON.stringify(err))
return Promise.reject(err)
})
//4.封裝Htpp類
// 提供request方法
class Http {
// Get 請(qǐng)求可以省略第二個(gè)泛型,因?yàn)閍xios默認(rèn)是any任何值可傳
//ResponseData 響應(yīng)數(shù)據(jù)類型 返回的數(shù)據(jù)(響應(yīng)回來(lái)的數(shù)據(jù))
//RequestData 請(qǐng)求數(shù)據(jù)類型 請(qǐng)求攜帶的參數(shù)
//Object 給個(gè)默認(rèn)值 有的是入?yún)?
//AxiosResponse是Axios庫(kù)中的一個(gè)接口,用于表示HTTP響應(yīng)。以便開(kāi)發(fā)者可以輕松地訪問(wèn)響應(yīng)的各個(gè)部分。
// request<T,D>
//T是自己的,D是請(qǐng)求得到
request<ResponseData, RequestData = Object>(config: AxiosRequestConfig<RequestData>) {
return instance<null, ResponseData, RequestData>(config)
}
}
//5.創(chuàng)建并導(dǎo)出 http實(shí)例對(duì)象
export const http = new Http()到此這篇關(guān)于鴻蒙中Axios數(shù)據(jù)請(qǐng)求的封裝和配置方法的文章就介紹到這了,更多相關(guān)鴻蒙 Axios數(shù)據(jù)請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 鴻蒙JS實(shí)戰(zhàn)之計(jì)算器功能開(kāi)發(fā)實(shí)例
- 華為鴻蒙系統(tǒng)應(yīng)用開(kāi)發(fā)工具 DevEco Studio的安裝和使用圖文教程
- 鴻蒙HarmonyOS App開(kāi)發(fā)造輪子之自定義圓形圖片組件的實(shí)例代碼
- 深入淺析華為鴻蒙IDE安裝與Hello World
- axios取消請(qǐng)求、配置的操作方法
- Axios請(qǐng)求超時(shí)設(shè)置無(wú)效的問(wèn)題及解決方案
- 使用Axios函數(shù)庫(kù)進(jìn)行網(wǎng)絡(luò)請(qǐng)求的操作指南
- 前端處理axios請(qǐng)求下載后端返回的文件流代碼實(shí)例
相關(guān)文章
解決使用IDE Run運(yùn)行出錯(cuò)package pack/test is not in GOROOT (/usr/loca
這篇文章主要介紹了解決使用IDE Run運(yùn)行出錯(cuò)package pack/test is not in GOROOT (/usr/local/go/src/pack/test),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
使用roolup構(gòu)建你的lib(實(shí)現(xiàn)步驟)
大家都知道Rollup更加適合用于構(gòu)建lib 而 Webpack, Precel 更加適合開(kāi)發(fā)應(yīng)用。本文,將結(jié)合一個(gè)簡(jiǎn)單的例子說(shuō)說(shuō)如何使用Rollup構(gòu)建自己的lib,感興趣的朋友一起看看吧2021-08-08
Vscode的SSH插件遠(yuǎn)程連接Linux的實(shí)現(xiàn)步驟
本文主要介紹了Vscode的SSH插件遠(yuǎn)程連接Linux的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
偽靜態(tài)技術(shù)介紹與優(yōu)缺點(diǎn)分析(較完整篇)
偽靜態(tài)太適合用在普通的企業(yè)網(wǎng)站上了——既不要求高并發(fā),但同時(shí)又很在乎seo(搜索引擎優(yōu)化),而且也要求后臺(tái)可動(dòng)態(tài)更新。2009-11-11

