当前位置:   article > 正文

鸿蒙开发基础 - Http请求数据接口动态渲染首页_鸿蒙如何请求接口

鸿蒙如何请求接口

1. Http请求数据的必要性

在日常的开发过程中, 如果页面的数据都在本地的话, 那么整个页面将是完全写死的. 每次更新渲染的数据都需要重新发布, 这样是不符合整个的业务要求的. 所以使用Http模块来动态的请求数据, 完成可变动的数据展示, 是非常重要一个步骤.

2. Http的请求流程是怎样的?

流程图(Stage模型):

在这里插入图片描述

3. 流程讲解

3.1 导入Http模块

在需要使用Http请求的地方, 我们需要对Http模块进行导入. 使用import关键字来导入鸿蒙内置的Http模块

import { http } from '@kit.NetworkKit'

  • 1
  • 2

在这里插入图片描述

3.1.1 申请网络请求权限

当然, 如果你在项目中, 第一次使用Http请求进行数据交互, 那么需要在配置文件中进行网络权限的申请. 具体路径为: entry/src/main/module.json5
在module.json5文件中, module对象中添加以下片段:

"requestPermissions": [
  {
    "name": "ohos.permission.INTERNET"
  }
]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

完整代码参考:

{
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "EntryAbility",
    "deviceTypes": [
      "phone",
      "tablet",
      "2in1"
    ],
    "deliveryWithInstall": true,
    "installationFree": false,
    "pages": "$profile:main_pages",
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:jizhangben",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:startIcon",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ],
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      },
      {
        "name": "bookkeeping",
        "srcEntry": "./ets/bookkeeping/bookkeeping.ets",
        "description": "$string:bookkeeping_desc",
        "icon": "$media:avatar",
        "label": "$string:bookkeeping_label",
        "startWindowIcon": "$media:startIcon",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ],
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
    ]
  }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
3.1.2 Http的模块封装

在导入Http模块的时候, 我们也可以选择对Http模块进行封装, 方便后面的数据请求复用. 提高代码的简洁度, 提高项目的可维护性.

封装代码示例:

在这里插入图片描述

3.2 使用生命周期函数来发送Http请求, 使用then方法来接收异步返回的结果并处理

因为是请求的首页数据, 所以选择在页面刚刚创建的时候发送请求, 也就是aboutToAppear函数中进行Http请求.
因为Http请求是一个异步操作, 所以会返回一个Promise对象, 使用.then方法来接收将来返回的结果.
在then方法中 传入一个回调函数, 这个回调函数需要有一个形参用来接收将来Http请求返回过来的结果. 在回调函数内部, 对这个结果进行业务需要的数据处理.

aboutToAppear(): void {
    http.createHttp().request(
        "https://v1.hitokoto.cn/",
        {
            expectDataType: http.HttpDataType.OBJECT
        }
    )
        .then(res => {
            this.message = res.result as yiyan
        })
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

4. DEMO完整代码参考:

import { http } from '@kit.NetworkKit';

interface yiyan {
  id: number;
  uuid: string;
  hitokoto: string;
  type: string;
  from: string;
  from_who: string;
  creator: string;
  creator_uid: number;
  reviewer: number;
  commit_from: string;
  created_at: string;
  length: number;
}

@Entry
@Component
struct Yiyan {
  @State message: yiyan | null = null;

  aboutToAppear(): void {
    http.createHttp().request(
      "https://v1.hitokoto.cn/",
      {
        expectDataType: http.HttpDataType.OBJECT
      }
    )
      .then(res => {
        this.message = res.result as yiyan
      })
  }

  build() {
    Row() {
      Column({ space: 10 }) {
        Column({ space: 20 }) {
          Text(this.message?.hitokoto || "还没有数据噢~")
            .width("80%")
            .fontSize(26)
            .fontWeight(FontWeight.Bold)
          Text(`--- ${this.message?.from}`)
            .alignSelf(ItemAlign.End)
        }

        Button("换一句")
          .width(120)
          .height(35)
          .backgroundColor("#00000000")
          .fontColor("#222")
          .fontWeight(400)
          .border({ width: 1 })
          .onClick(() => {
            http.createHttp().request(
              "https://v1.hitokoto.cn/",
              {
                expectDataType: http.HttpDataType.OBJECT
              }
            )
              .then(res => {
                this.message = res.result as yiyan
              })
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71

写在最后

鸿蒙战略胜利,目前鸿蒙开发是一个急需要人才的缺口,在未来几年势必会有大量的鸿蒙岗位出现,目前所存在的鸿蒙岗位也是给出了相当高的薪资。事实证明,鸿蒙开发确实是一块香饽饽。作为华为自家的操作系统,正在逐步扩张市场份额。想要转行或者入行的朋友可以下手了。在这里,为大家提供一份我整理的鸿蒙开发学习资料,涵盖了UI开发、web、应用模型多个知识点,有需要的朋友可以扫描下方二维码,免费获取更多相关资料。

一、鸿蒙进阶开发学习之UI开发

1、方舟开发框架(ArkUI)概述

2、基于ArkTS声明式开发范式

3、兼容JS的类Web开发范式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、鸿蒙开发进阶学习之web

1、设置基本属性和事件

2、在应用中使用前端页面JavaScript

3、并发

4、…

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、鸿蒙开发进阶学习之应用模型

1、应用模型概述

2、Stage模型开发指导

3、FA模型开发指导

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、鸿蒙零基础入门学习指南

1、快速入门

2、开发基础知识

3、资源分类与访问

4、学习ArkTs语言

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/651571
推荐阅读
相关标签
  

闽ICP备14008679号