HarmonyOS 鸿蒙Next @yunkss/eftool最新的2.0网络请求
HarmonyOS 鸿蒙Next @yunkss/eftool最新的2.0网络请求
现在的请求返回结果是Promise<E | EfAxiosError>,无法像之前那样直接获取E类型的结果。
我现在是用as断言来指定返回类型为Promise<E>,但是这样写EfAxiosError的返回类型要怎么处理
关于HarmonyOS 鸿蒙Next @yunkss/eftool最新的2.0网络请求的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。
9 回复
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
优化后写法如下
//登录
let dto = await efRcpClientApi.post<OutDTO<UserDTO>>({
url: '/api/eftool/login',
query: {
'account': 'efadmin',
'pwd': '1234561'
},
loadingTxt: '正在登录中...'
});
if (dto.data && dto.data["success"]) {
// ToastUtil.showToast('登录成功~');
//请求成功后将token存储在efRcpParams.tokenValue
efRcpConfig.token.tokenValue = dto.data["dataRow"].token;
efRcpConfig.token.tokenName = "Authorization";
this.message = JSON.stringify(dto.data);
}
您好,感谢使用并提出宝贵意见,调用efClientApi.get方法处进行try-catch包裹,在try里面依旧使用as 来转换,在catch里面直接将Error 抛出,在调用处使用instanceOf来判断是否返回的是EfAxiosError,如下图代码
```
//登录
let dto = await efClientApi.post<User, OutDTO<UserDTO>>({
url: '/api/eftool/login',
query: new User(this.account, this.pwd),
headers: {
"efAxiosHeader": '旺旺崔冰冰'
},
loadingTxt: 'eftool登录中...'
})
//此处如果异常报错则类型为EfAxiosError
if (!(dto instanceof EfAxiosError) && dto) {
//请求成功后将token存储在efRcpParams.tokenValue
efAxiosParams.tokenValue = dto["dataRow"].token;
efAxiosParams.tokenName = "Authorization";
}
this.message = JSON.stringify(dto);
```
那这样每次是使用也太繁琐了吧
有道理 ,感谢提出建议 下一版本会优化该问题
您好,ef_ecp1.0.1版本已发布,已经优化上述繁琐方式,辛苦更新使用,再次感谢使用并提出宝贵意见,如果使用的是eftool全量包,需要等到晚上审核过后可以使用2.0.1版本
之前的版本里,可以使用get<OutDTO<E>>的格式来接收数据,后端都是code、msg、data的结构。
新版不行了,OutDTO换成自定义的result接口可以用