学习鸿蒙Next 之路 http

embedded/2024/10/20 13:20:14/
http://www.w3.org/2000/svg" style="display: none;">

关于学习鸿蒙开发之http的请求
首先还是老样子先上代码,然后我再说出我的看法
先创建一个请求的函数
function RequestHttp(url:string,data?:Object|string){
}

先展示get请求,之前在unity的开发中只是用到了get和post。没想到在学鸿蒙前端的时候还用到put和del。其实这四个函数就是增删改查的意思,但是我在unity开发请求http的时候你只需要用到数据就可以了,而且接口的数据并不是所有的字段你都用得上所以我觉得在data参数真的没必要说是要用object类型,这里还是写一下把,因为看教学视频中有这么写的我还是在这里说一下。.
首先创建httphttp这个是鸿蒙的包。
let req = http.createHttp()
再说这个url地址,get请求都是这样http://xxx.xxx.xxx/xx?name=‘张三’
如果请求的参数需要多写就是这样,需要有个&符号拼接
http://xxx.xxx.xxx/xx?name=‘张三’&age=18
所以
1、我觉得url拼接的话不要在封装函数内部拼接,因为他是个工具
2、地址不是固定的,我解释下地址不固定为什么,但是一般的情况下地址是不会变的
在之前unity开发中,后台开发是接的设备硬件,你换设备厂商了,后台逻辑可能会更改,但是之前的后台接口可能是个通用的,后台会给你个新的接口地址
因为我不知道真正的鸿蒙开发是如何,搜一下资料很多都是axios,web前端开发的东西,emmmmm咱没接触过不是很懂。
学习的时候看到个这个代码
const temp = Object.keys(data).map(key => {
${key}=${data[key]}
}).join(‘&’)
urlstr += ?${temp}

这代码就是上述之前讲到的拼接字符串,但是我想的是如果你不需要这么多obj的字段属性,你传值的时候就不用拼接那么长,
比如查你的个人信息,你只需要出示你的身份证号就好了,你干嘛把你相关的亲戚也报出来呢?不知道大家明白我的意思没有?
你只需要传当前接口需要的字段,如果需求的字段很多你可以自己再去封装拼接地址的用法temp。一般不会的,都会有个唯一标识去查这个信息。
先说下请求函数参数,urlstr地址。另一个就是请求需要传的参数
req.request(urlstr, info)
//组装参数
let info: http.HttpRequestOptions = {
method: http.RequestMethod.GET,
extraData:‘’||data
header: {
ContentType: ‘application/json’,
Authorization: token
},
readTimeout: 10000, //10s不然就超时
expectDataType: http.HttpDataType.OBJECT//返回对象
}

HttpRequestOptions 参数method是请求的方法是什么方式,这里介绍的get ,extraData就是传的’'空字符串,如果是post或者put就是data
这个data就是对象,你需要传这个对象,(下面是json对象展示)在鸿蒙里他好像是直接就可以对象转json发送给后端
{
‘name’:’张三‘,
‘age’:'18‘
}
如果你需要有token验证的,你在header中就写上这个header的Authorization
接下来就是数据返回
let result = await req.request(urlstr, info)
函数的返回值是HttpResponse,他有个responseCode属性。可以根据这个code是多少判断 你请求成功还是其他问题
当然他是promiss类型的HttpResponse,需要在request前面加上await
返回后可以这么写,ResponseData函数后面是有泛型的标识的,这里好像没有显示出来
export interface ResponseData{
code: number
msg: string
data: T
}
let res = result.result as ResponseData

返回的result就对象就可以解析为一个状态码,一个消息,然后一个数据体,转一下直接用data就是你需要的数据对象,因为你请求的时候是有这个参数 expectDataType: http.HttpDataType.OBJECT//返回对象 不然你需要json.pase去转一下对象
那么return回来的就是这个对象。 return res.data 返回依旧是promiss 在函数中你就必须加上promisss 但是这个T的泛型标识还是没有显示(Promiss后面要有泛型标识)RequestHttp后面也有
async function RequestHttp(url: string,data?: object): Promise{
}

200responseCode就是成功,然后msg是ok 你就是请求成功了,如果请求不成功或者其他问题,看看responseCode 如果404那么你地址写错了,401说明你token过期了,你需要重新登录去获取token,如果是其他的responseCode,那么你就抛出个异常,看看问题出在哪里
在请求的时候用个try catch 包裹起来
console.error(‘err===============>’, err)
return Promise.reject(err)


http://www.ppmy.cn/embedded/129003.html

相关文章

iOS 18.1的开发者预览版Beta 7版本测评,是否值得升级

10月14日苹果悄咪咪地放出了iOS 18.1的开发者预览版Beta 7,版本号是22B5075a。这啥意思呢?意味着下个星期,我们就能迎来iOS 18.7的准正式版啦!苹果官方说得好好的,iOS 18.1正式版系统会在10月29日和大家见面。咱们就坐…

字符串及正则表达式

目录 字符串 字符串常用方法: 格格式化字符串的三种方式: 格式化字符串的详细格式: 字符串的编码: 字符串的解码: 数据的验证: 字符串拼接的几种方式: 字符串去重: 正则表达…

成语积累学习

识文断字:有一点文化知识 雨后春笋:春雨过后快速生长的竹笋;比喻大量涌现的新生事物 味同嚼蜡:如同咀嚼白蜡一样,毫无味道。形容文章或言辞枯燥乏味。 差强人意:大体上让人满意 八面玲珑:处…

STC15W408AS直流有刷电机定时器0PWM 脉宽输出

/***2024 测试直流电机正反转past***/ /***2024 9 27板2024 10 20*L1000 CODE4422**/ #include <REG52.H> #include <intrins.h> #include <string.h> #include "s…

SpringCloudAlibaba升级手册

目录 1. 版本对照 版本现状 SpringCloud与AlibabaCloud对应版本 Springboot与Elasticsearch版本对应 2. openfeign问题 问题 解决方案 3. Feign请求问题 问题 解决方法 4. Sentinel循环依赖 问题 解决方案 5. bootstrap配置文件不生效 问题 解决方案 6. Nacos的…

软考(网工)——网络安全

文章目录 &#x1f550;网络安全基础1️⃣网络安全威胁类型2️⃣网络攻击类型 &#x1f551;现代加密技术1️⃣私钥密码/对称密码体制2️⃣对称加密算法总结3️⃣公钥密码/非对称密码4️⃣混合密码5️⃣国产加密算法 - SM 系列6️⃣认证7️⃣基于公钥的认证 &#x1f552;Hash …

AcWing1027

题目重述&#xff1a; 题目的核心是找到一条路径的最大权值总和&#xff0c;但路径要从起点 (1, 1) 走到终点 (n, n)。由于两条路径分别经过不同的格子&#xff0c;我们可以巧妙地将问题简化为两次同时出发的路径问题。这种映射的设计让我们能够更方便地处理两条路径重叠在同一…

探索 Python Web 开发:从框架到爬虫

Python 是 Web 开发中广泛使用的编程语言&#xff0c;因其简单、灵活和强大的生态系统&#xff0c;适合构建各种类型的 Web 应用和 API。在本篇博客中&#xff0c;我们将讨论 Web 开发的几个重要主题&#xff0c;包括 Flask 和 Django 框架、API 开发、HTTP 请求处理以及网页爬…