国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

鴻蒙API9+axios封裝一個(gè)通用工具類

這篇具有很好參考價(jià)值的文章主要介紹了鴻蒙API9+axios封裝一個(gè)通用工具類。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

使用方式:
打開Harmony第三方工具倉(cāng),找到axios,如圖:
鴻蒙axios封裝,技術(shù)雜談,harmonyos,華為,鴻蒙,arkts
第三方工具倉(cāng)網(wǎng)址:https://ohpm.openharmony.cn/#/cn/home
在你的項(xiàng)目執(zhí)行命令:ohpm install @ohos/axios
前提是你已經(jīng)裝好了ohpm ,如果沒有安裝,可以在官網(wǎng)找到詳細(xì)的安裝教程;

注意:不是在你的entry目錄下,比如你的項(xiàng)目名稱:鴻蒙axios封裝,技術(shù)雜談,harmonyos,華為,鴻蒙,arkts
在父級(jí)目錄安裝。

接著封裝工具類,新建一個(gè)ts類:

import axios, { AxiosError, AxiosInstance, AxiosResponse, FormData, InternalAxiosRequestConfig } from '@ohos/axios'
import defaultAppManager from '@ohos.bundle.defaultAppManager';
import ResultData from './ResultData';


class AxiosUtil {
  private instance: AxiosInstance;

  constructor() {
    this.instance = this.getInstance();
    this.addInterceptor(this.instance)
  }

  getInstance(): AxiosInstance {
    const instance = axios.create({
       baseURL: "http://127.0.0.1:10001/jianshen"
    })
    return instance;
  }

  addInterceptor(instance: AxiosInstance): void {
    instance.interceptors.request.use((config: InternalAxiosRequestConfig) => {
      if (config.url.concat('login')) {
      	// 如果是登錄路徑跳過,其余都需要帶上token
        return config;
      } else {
      	// 從全局緩存中取token
        config.headers.set("Authorization", AppStorage.Get("token"))
        return config;
      }
    }, (error: AxiosError) => {
      return Promise.reject(error);
    })

    instance.interceptors.response.use((response: AxiosResponse) => {
      if (response.status == 200) {
        return response.data;
      } else {
        return Promise.reject(response.statusText)
      }
    }, (error: AxiosError) => {
      return Promise.reject(error)
    })
  }

  httpGet(url: string, params: object = {}) {
    return new Promise((resolve, reject) => {
      this.instance.get(url, params)
        .then(response => {
          resolve(response);
        })
        .catch(error => {
          reject(error)
        })
    })
  }

  httpPost(url: string, params: object = {}) {
    return new Promise((resolve, reject) => {
      this.instance.post(url, params)
        .then(response => {
          resolve(response);
        })
        .catch(error => {
          reject(error)
        })
    })
  }

  httpFileUpload(url: string, formData: FormData) {
    return new Promise((resolve, reject) => {
      this.instance.post(url, formData,
        {
          headers: { 'Content-Type': 'multipart/form-data' }
        })
        .then(response => {
          resolve(response);
        })
        .catch(error => {
          reject(error)
        })
    })
  }
}

const axiosUtil: AxiosUtil = new AxiosUtil();

export default axiosUtil;

如何使用?

import axiosUtil from '../../common/AxiosUtil

然后就可以直接在你的arkts代碼中使用了;例如:


// @ts-nocheck

import CommonUtil from '../../common/CommonUtil'
import ResultData from '../../common/ResultData'
import axiosUtil from '../../common/AxiosUtil'
import { Banner } from './model/Banner'
import { Teacher } from './model/Teacher'

@Component
@Preview
export default struct ShowYePage {
  @State message: string = '首頁(yè)'
  private swiperController: SwiperController = new SwiperController();
  @State bannerList: Banner[] = [];
  @State teacherFilterValue: string = ''
  @State teacherList: Teacher[] = [];
  pageIndex: number = 1;
  pageSize: number = 10;
  total: number = 0;

  arr:number[] = [1,2,3,4,5,6,7,8,9,10]

  build() {
    Scroll() {
      Column() {
        Flex({ justifyContent: FlexAlign.Center }) {
          // 上面的搜索欄
          Search({ placeholder: '支持按教練名稱/標(biāo)簽進(jìn)行查詢哦~' }).searchButton("搜索").onSubmit(value => {
            this.teacherFilterValue = value;
          })
        }
        .margin({ top: 14 })

        // 輪播圖
        Swiper(this.swiperController) {
          if (this.bannerList.length > 0) {
            ForEach(this.bannerList, item => {
              Image(item.img).height(50).width('100%')
            })
          } else {
            Text('占位')
          }
        }
        .cachedCount(2) // 設(shè)置預(yù)加載子組件個(gè)數(shù)
        .index(1) // 設(shè)置當(dāng)前在容器中顯示的子組件的索引值
        .autoPlay(true) // 子組件是否自動(dòng)播放
        .interval(4000) // 使用自動(dòng)播放時(shí)播放的時(shí)間間隔,單位為毫秒
        .indicator(true) // 是否啟用導(dǎo)航點(diǎn)指示器
        .loop(true) //  是否開啟循環(huán)
        .duration(1000) // 子組件切換的動(dòng)畫時(shí)長(zhǎng),單位為毫秒
        .itemSpace(0) // 設(shè)置子組件與子組件之間間隙
        .curve(Curve.Linear) // 設(shè)置Swiper的動(dòng)畫曲線,默認(rèn)為淡入淡出曲線
        .borderRadius(15)
        .margin({top:14})
        .height(150)
        .onChange((index: number) => {
          console.info(index.toString())
        })

        // 教練列表
        Column() {
          Flex({justifyContent:FlexAlign.Start}){
            Text('教練列表').fontSize(24).fontWeight(500).padding({left:14})
          }.height(50).width('100%')
          List() {
            ForEach(this.teacherList,(item:Teacher)=>{
              ListItem() {
                TeacherComponent({teacher:item})
              }
            })
          }
          .onReachEnd(()=>{
            console.log('觸底了')
          })
          .onReachStart(()=>{
            console.log('上拉了')
          })
          .width('100%')
          .layoutWeight(1)
        }
        .borderRadius({ topLeft: 20, topRight: 20 })
        .margin({ top: 20 })
        .layoutWeight(1)
      }.height('100%').width('100%')
    }.height('100%').width('100%')

    .padding({ left: 14, right: 14 })
  }

  aboutToAppear() {
    this.getBannerList();
    this.getTeacherList();
  }
  // 支持async和await的用法 
  async getBannerList() {
    const result: Banner[] = await axiosUtil.httpPost("banner/list");
    this.bannerList = result;
  }

  async getTeacherList() {
    const params = {
      pageIndex: this.pageIndex,
      pageSize: this.pageSize,
      filterValue: this.teacherFilterValue
    }
    const result = await axiosUtil.httpPost("teacher/list", params);
    const teacherList = result.list;
    this.teacherList = teacherList;
    this.total = result.total;
  }
}


@Component
struct TeacherComponent {

  @State teacher:Teacher = null;


  build() {
    Flex({ justifyContent: FlexAlign.Center }) {
      // 左側(cè)頭像
      Flex({ justifyContent: FlexAlign.Start }) {
        Image(this.teacher.avatar).width('100%').height('100%').borderRadius(10)
      }.margin({ top: 5, bottom: 5, right: 5 }).height('95%').width('30%')
      // 右側(cè)描述
      Flex({justifyContent:FlexAlign.Start,direction:FlexDirection.Column}) {
        Text(`教練名稱:${this.teacher.username}`).fontSize(24).fontWeight(100).fontStyle(FontStyle.Italic)
        Text(`教練簡(jiǎn)介:${this.teacher.content}`).fontSize(18).fontWeight(90)
        Text(`標(biāo)簽:${this.teacher.flag}`).fontSize(14)
      }.margin({top:5,bottom:5,right:5}).height('100%').width('70%').onClick(()=>{
        // 跳轉(zhuǎn)教練詳情頁(yè)面 帶參數(shù)id
        console.log(this.teacher.id)
      })
    }
    .height(150)
    .width('100%')
    .borderRadius(20)
    .margin({bottom:20})
    .backgroundColor(Color.White)
  }
}

到此結(jié)束,有任何問題歡迎大佬留言指正文章來源地址http://www.zghlxwxcb.cn/news/detail-854533.html

到了這里,關(guān)于鴻蒙API9+axios封裝一個(gè)通用工具類的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ThinkPHP 通用的API格式封裝

    ThinkPHP 通用的API格式封裝

    在BaseController中重寫__call方法,當(dāng)調(diào)用不存在的方法時(shí),就會(huì)調(diào)用__call方法,會(huì)傳入請(qǐng)求方法和參數(shù) 在控制器下面新建Error控制器,然后添加__call方法,這樣就會(huì)調(diào)用不存在的控制器的時(shí)候會(huì)調(diào)用__call方法,會(huì)傳入請(qǐng)求的控制器名稱和參數(shù) 測(cè)試 假定一個(gè)成功的請(qǐng)求,測(cè)試一下

    2024年02月10日
    瀏覽(20)
  • 使用ts封裝一個(gè)Axios請(qǐng)求

    下面是一個(gè)簡(jiǎn)單的 TypeScript 版本的封裝 Axios 請(qǐng)求的例子,基于 Axios 0.21.1 版本: 在這個(gè)示例中,我們首先定義了一個(gè)通用的響應(yīng)結(jié)構(gòu) ApiResponse,用來包裝 API 返回的數(shù)據(jù),包括狀態(tài)碼、數(shù)據(jù)和消息等信息。然后,我們創(chuàng)建了一個(gè) Axios 實(shí)例,定義了請(qǐng)求和響應(yīng)攔截器,以及封裝

    2024年02月16日
    瀏覽(30)
  • 【vue實(shí)戰(zhàn)項(xiàng)目】通用管理系統(tǒng):api封裝、404頁(yè)

    【vue實(shí)戰(zhàn)項(xiàng)目】通用管理系統(tǒng):api封裝、404頁(yè)

    前言 本文為博主的vue實(shí)戰(zhàn)小項(xiàng)目系列中的第三篇,很適合后端或者才入門的小伙伴看,一個(gè)前端項(xiàng)目從0到1的保姆級(jí)教學(xué)。前面的內(nèi)容: 【vue實(shí)戰(zhàn)項(xiàng)目】通用管理系統(tǒng):登錄頁(yè)-CSDN博客 【vue實(shí)戰(zhàn)項(xiàng)目】通用管理系統(tǒng):封裝token操作和網(wǎng)絡(luò)請(qǐng)求-CSDN博客 目錄 1.api封裝 2.404頁(yè)面

    2024年02月04日
    瀏覽(22)
  • 【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】

    【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】

    ?????個(gè)人主頁(yè) :@元宇宙-秩沅 ????? hallo 歡迎 點(diǎn)贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 秩沅 原創(chuàng) ????? 收錄于專欄 : unityUI專題篇 ??? ??????:步驟 1.添加道具預(yù)制體(隨機(jī)生成武器) 2.封裝道具基類 3.封裝武器道具邏輯 1.封裝道具基類 封裝武器道具

    2024年02月15日
    瀏覽(24)
  • 【Vue項(xiàng)目筆記心得】postman接口測(cè)試、axios二次封裝、api接口統(tǒng)一管理

    【Vue項(xiàng)目筆記心得】postman接口測(cè)試、axios二次封裝、api接口統(tǒng)一管理

    1、postman接口測(cè)試 下載地址:Download Postman | Get Started for Free ? 2、axios二次封裝 (1)為什么進(jìn)行二次封裝axios? 請(qǐng)求攔截器、響應(yīng)攔截器: 請(qǐng)求攔截器 :可以在發(fā)請(qǐng)求之前可以處理一些業(yè)務(wù) 響應(yīng)攔截器 :當(dāng)服務(wù)器數(shù)據(jù)返回以后,可以處理一些事情 安裝axios: npm?install?ax

    2023年04月08日
    瀏覽(24)
  • 前端(二十七)——封裝指南:Axios接口、常用功能、Vue和React中的封裝技術(shù)

    前端(二十七)——封裝指南:Axios接口、常用功能、Vue和React中的封裝技術(shù)

    ??博主:小貓娃來啦 ??文章核心: 前端封裝指南:Axios接口、常用功能、Vue和React中的封裝技術(shù) 在我們前端開發(fā)當(dāng)中,封裝是種將代碼和功能組織起來以便重復(fù)使用的方式。它可以使開發(fā)人員更高效地編寫、維護(hù)和管理代碼。本文將探討前端封裝的定義、重要性以及在Web開

    2024年02月05日
    瀏覽(23)
  • axios全局封裝取消請(qǐng)求,你可以創(chuàng)建一個(gè) Axios 實(shí)例,并為該實(shí)例配置默認(rèn)的 CancelToken

    可以在你的應(yīng)用中使用這個(gè)封裝過的 Axios 實(shí)例,并通過調(diào)用 instance.cancelAll() 方法來取消所有未完成的請(qǐng)求。

    2024年02月04日
    瀏覽(24)
  • 用PHP封裝一個(gè)強(qiáng)大且通用的cURL方法

    用PHP封裝一個(gè)強(qiáng)大且通用的cURL方法。 用PHP封裝一個(gè)強(qiáng)大且通用的cURL方法。 用PHP封裝一個(gè)強(qiáng)大且通用的cURL方法。 用PHP封裝一個(gè)強(qiáng)大且通用的cURL方法。

    2024年02月14日
    瀏覽(36)
  • Ajax_3 Ajax原理+ (XMLHttpRequest + Promise )+ 封裝一個(gè)axios插件庫(kù),實(shí)現(xiàn)功能。

    01-Ajax原理-XMLHttpRequest 使用XMLHttpRequest 步驟: 創(chuàng)建XMLHttpRequest對(duì)象 配置請(qǐng)求方法請(qǐng)求url網(wǎng)址 監(jiān)聽loadend事件,接受響應(yīng)結(jié)果 發(fā)起請(qǐng)求 需求:使用XMLHttpRequest對(duì)象與服務(wù)器通信 代碼示例 02-XMLHttpRequest-查詢參數(shù) 定義:瀏覽器提供給服務(wù)器的額外信息,讓服務(wù)器返回瀏覽器想要的

    2024年02月14日
    瀏覽(47)
  • 【HarmonyOS】API9網(wǎng)絡(luò)buffer圖片加載

    ? 【引言】 HarmonyOS中加載網(wǎng)絡(luò)圖片常用的方法是直接給Image組件添加圖片的網(wǎng)絡(luò)地址,申請(qǐng)網(wǎng)絡(luò)權(quán)限ohos.permission.INTERNET后就可以通過url加載對(duì)應(yīng)的圖片了,如HarmonyOS官網(wǎng)中的寫法: 【問題概述】 但是日常開發(fā)中有些圖片是存儲(chǔ)云服務(wù)器中的,下載這些圖片需要通過鑒權(quán)接口

    2024年02月14日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包