接口解析
2024-11-30 13:22:19
202次阅读
0个评论
最后修改时间:2024-11-30 13:23:58
接口解析
安装axios库
加载位置 在Terminal中输入命令
ohpm install @ohos/axios
这个ohpm不需要单独安装,是鸿蒙安装包自带的,别跟npm与pnpm相比较。
加载完毕后引入axios
import axios, { AxiosResponse } from '@ohos/axios';
安装axios库可能的问题 明明已经安装完毕了,就是加载不出来,这里是由于当时计算机的内存可能快沾满了,没有正常异步加载成功。 手动加载库 步骤1、Build -> Clean Project 步驟2、File -> Sync and Refresh Project
对http的请求概述
应用通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。 HTTP数据请求功能主要由http模块提供。 使用该功能需要申请ohos.permission.INTERNET权限。 配置设置 配置文件:
entry\src\main\module.json5
增加配置(json中分隔前后要单独加一个英文逗号,):
,
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
}
]
增加位置(放在最后即可,但是看好整个对象属于【module】,不是单独存在的key):
我们这里使用的是axios来进行访问,主要通过其get与post进行访问。
model模型创建
创建model文件夹
创建model.ets文件 有几层就要创建几层model的ets文件,我们在其中看到address又是一个对象,所以得单独创建一个AddRess.ets的文件。
city:string;
country:string;
street:string;
}
import { AddRess } from "./AddRess";
export interface Users {
address:AddRess;
age:number;
email:string;
id:number;
name:string;
phone_numbers:string;
}
/*
*用于承接返回数据
* */
export interface ApiResult <T>{
code:number;
msg:string;
data:T
}
GET请求示例
引包操作
import axios, { AxiosResponse } from '@ohos/axios';
import { ApiResult } from '../model/ApiResult';
import { Users } from '../model/Users';
import { BusinessError } from '@kit.BasicServicesKit';
返回数据
@State info: Users[] | null = null;
GET请求函数
async queryUsers() {
try {
const url = "http://39.107.126.100:5000/getInfo";
// 返回数据类型
const result: AxiosResponse<Users[]> =
await axios.get<ApiResult<Users[]>, AxiosResponse<Users[]>, null>(url);
this.info=result.data;
} catch (error) {
const err = error as BusinessError;
}
}
遍历展示数据
import axios, { AxiosResponse } from '@ohos/axios';
import { ApiResult } from '../model/ApiResult';
import { Users } from '../model/Users';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct ShowUsers {
@State info: Users[] | null = null;
build() {
Column() {
Column() {
Text() {
Span("用 户 信 息")
}.fontSize(36)
.width('100%')
.margin({ top: '15%', left: '50%' })
}
Text().borderStyle(BorderStyle.Solid).borderWidth(1).width('100%')
List() {
ForEach(this.info, (u: Users, index) => {
ListItem() {
Column() {
Row() {
Text("编号:").fontSize(22)
Text(u.id.toString()).fontSize(22)
}.width('100%')
Row() {
Text("姓名:").fontSize(22)
Text(u.name.toString()).fontSize(22)
}.width('100%')
Row() {
Text("年龄:").fontSize(22)
Text(u.age.toString()).fontSize(22)
}.width('100%')
Row() {
Text("手机号:").fontSize(22)
Text(u.phone_numbers.toString()).fontSize(22)
}.width('100%')
Row() {
Text("邮箱:").fontSize(22)
Text(u.email.toString()).fontSize(22)
}.width('100%')
Row() {
Text("地址:").fontSize(22)
Text(){
Span(u.address.city.toString())
Span(u.address.country.toString())
Span(u.address.street.toString())
}.fontSize(22)
}.width('100%')
Text().borderStyle(BorderStyle.Solid).borderWidth(1).width('100%')
}.width('100%')
.justifyContent(FlexAlign.Start)
}
})
}
.listDirection(Axis.Vertical)
}
}
aboutToAppear(): void {
this.queryUsers()
}
/**
* 异步加载get请求
*/
async queryUsers() {
try {
const url = "http://39.107.126.100:5000/getInfo";
// 返回数据类型
const result: AxiosResponse<Users[]> =
await axios.get<ApiResult<Users[]>, AxiosResponse<Users[]>, null>(url);
this.info = result.data;
} catch (error) {
const err = error as BusinessError;
}
}
}
00
- 0回答
- 0粉丝
- 0关注
相关话题
- 接口解析
- 元服务——接口解析
- 元服务——5、接口解析
- 第五章接口解析示例
- 【HarmonyOS NEXT】ArkTs函数、类、接口、泛型、装饰器解析与使用
- 【芙莉莲教你写代码】元服务 DevEco Studio 第五章 接口解析
- OpenHarmony:Har工程依赖库接口二次导出
- HarmonyOS应用开发实战,半天实现知乎日报项目(二、网络接口的封装使用)
- HarmonyOS Next 架构深度解析
- HarmonyOS应用开发实战:半天实现知乎日报项目(九、知乎日报项目接口使用指南)
- HarmonyOS NEXT应用开发实战:一分钟写一个网络接口,JsonFormat插件推荐
- JSON.parse 解析错误分析
- 140.HarmonyOS NEXT系列教程之3D立方体旋转轮播案例讲解之DataChangeListener接口
- HarmonyNext深度解析与ArkTS实战指南
- 132.HarmonyOS NEXT系列教程之3D立方体旋转轮播案例讲解(三):接口类型系统