实战04-http请求

http.ts
import axios, { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from '@ohos/axios';

const request = axios.create({
  baseURL: 'http://192.168.1.7:8001/demo/lx', // 通过 ipconfig 查询当前电脑的 ip,使用自己电脑的 ip 地址
  timeout: 20000,
})

request.interceptors.request.use(
  (config: InternalAxiosRequestConfig) => {
    // 未来需要添加 token
    // config.headers.token = token;
    return config;
  }
)

request.interceptors.response.use(
  (response: AxiosResponse) => {
    if (response.data.code === 200) {
      return response.data.data;
    } else {
      return Promise.reject(response.data.message);
    }
  },
  (error: AxiosError) => {
    return Promise.reject(error.message);
  }
)

export default class Http {
  get<T>(url: string, params?: Object) {
    return request.get<null, T>(url, {
      params
    })
  }

  post<T>(url: string, data?: Object) {
    return request.post<null, T>(url, data)
  }

  put<T>(url: string, data?: Object) {
    return request.put<null, T>(url, data)
  }

  delete<T>(url: string, params?: Object) {
    return request.delete<null, T>(url, {
      params
    })
  }
};
home.ts
import Http from '../utils/http';
import { HomeData } from './models/HomeData';

const http = new Http();

//获取首页数据
export const getHomeDataApi = () => {
  return http.get<HomeData>('home/info')
}

 

HomeDate.ts
export interface HomeData {
  "bannerList": IBannerList
  "navList": INavList
  "titleList": ITitleList
  "planList": IPlanList
  "adPicTure": string
}

export interface IBannerItem {
  "id": number,
  "name": string,
  "imageURL": string
}

export type IBannerList = IBannerItem[]

export interface INavItem {
  "id": number,
  "title": string,
  "imageURL": string
}

export type INavList = INavItem[]

export interface ITitleItem {
  "id": number
  "imageURL": string
  "title": string
  "sub_title": string
}

export type ITitleList = ITitleItem[]

export interface IPlanItem {
  "id": number
  "imageURL": string
}

export type IPlanList = IPlanItem[]

 

根据自己的情况去改动改动。。我是写的也不规范。我也是个新手 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值