当前位置: 首页 > 科技观察

舍弃被窝的温暖,只为它丨云酷,一款运行在鸿蒙系统上的应用

时间:2023-03-18 01:58:13 科技观察

更多信息请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto。com/#zz上一篇继续,第一章。第一部分简单分析了整个项目要做什么,达到什么效果。本节将从服务端API协议、登录(非注册,登录即注册)流程、长连接、华为云对象存储OBS的基本概念介绍等方面对整个项目的技术层面进行详细介绍。本节内容概要:1.服务端API返回结构约定2.登录流程3.华为云OBS介绍处理数据时,可以减少各种拆解。因此,在初期搭建服务端项目后,首先要做的就是封装一套合理的返回数据结构,使API返回结构大致相似。1)使用JavaEnum枚举类封装常见的返回错误,如请求接口成功、请求接口失败、登录验证成功等。packagecom.ming.harmonyos.photokit.conf;/***枚举类对象*/publicenumStatusCode{//publicSUCCESS(200,"成功"),FAILED(9999,"失败"),UNKNOWN_ERROR(9998,"未知异常"),SYSTEM_ERROR(9997,"系统异常"),REQUEST_PARAMETER_ERROR(1001,"请求参数错误"),REQUEST_ACCESS_TOKEN_ERROR(1002,"请求参数token值错误"),//电话号码校验CHECK_CELL_PHONE_NUM_ERROR(2001,"手机号码输入error"),LOGIN_VALID_CODE_ERROR(2002,"登录验证码错误"),LOGOUT_ERROR(2003,"退出失败"),LOGOUT_AUTH_ERROR(2004,"退出失败,token不存在");/***状态码*/privateintcode;/***状态消息*/privateStringmessage;StatusCode(intcode,Stringmessage){this.code=code;this.message=message;}publicintgetCode(){returncode;}publicStringgetMessage(){returnmessage;}}2)、封装我目前使用的是一组API返回的两种数据结构,一种是true|false作为请求状态,另一种是o形式的请求状态f个数字。两者都有其优点和缺点。与第二种相比,第一种需要在返回消息中添加异常代码来实现具体的异常定位。本项目只是一个简单的示例项目,所以我选择了第二种,方便控制。packagecom.ming.harmonyos.photokit.conf;importlombok.Data;importjava.io.Serializable;/***返回结果类统一封装*/@DatapublicclassApiResultInfoimplementsSerializable{/***状态码*/privateIntegercode;/***消息*/privateStringmessage;/***数据对象*/privateTdata;publicApiResultInfo(){}publicApiResultInfo(Integercode,Stringmessage,Tdata){this();setCode(代码);setMessage(消息);setData(数据);}publicstaticApiResultInfogetFailedInstant(Integercode,Stringmessage,Tdata){returnnewApiResultInfo<>(code,message,data);}publicstaticApiResultInfogetInstant(Tdata){returnnewApiResultInfo<>(StatusCode.SUCCESS.getCode(),StatusCode.SUCCESS.getMessage(),data);}}3)示例界面这只是一个登录(和注册)界面,其他界面暂未开放。接口信息接口地址:http://xxx/yunku/login.do请求示例:http://xxx/yunku/login.do支持协议:HTTP/HTTPS请求方式:POST返回格式:UTF8JSON请求参数返回示例{"code":200,"msg":"success","data":{"authCode":"xxxxxx","userInfo":{"iId":1,"sPhone":"13800000000","sNickName":"yx_13800000000","sPath":"http://xxxx/yx_default.png","dVolume":20,"dUsedVolume":5,"tEdit":"2021-01-20"}}}返回参数login进程login即注册,用户首次登录,验证通过后,将用户信息以key-value的形式存储在Redis缓存中。如果您再次登录,将存储新值,用户缓存有效期为7天。华为云对象存储OBS简介对象存储服务(OBS)提供海量、安全、高可靠、低成本的数据存储能力,允许用户存储任意类型、任意大小的数据。适用于企业备份/归档、视频点播、视频监控等多种数据存储场景。我们在这里只是为了存储多媒体文件。现阶段我们只需要了解OBS的bucket和object这两个概念。桶是存储对象的容器,对象是数据存储的基本单位。按照我们系统的文件管理,一个bucket相当于一个磁盘,比如D盘,D盘根目录下只能存在一个相同类型的文件,而object相当于一个文件在一个文件夹中。在云库中,用户可以通过HAP创建多个云库(桶),并上传云库中的多媒体文件。HAP输入手机号码获取验证码。这也是云图书馆HAP的主页面。启动云库HAP后,进入应用中看到的第一个界面。对于登录页面,一般都是一样的。输入框和交互按钮是页面的主要组件,后续会添加一些Image和Text组件。这里我们只使用下表中列出的组件来构建页面。Buttonbutton=(Button)findComponentById(ResourceTable.Id_get_valid_code_btn);TextFieldinputPhoneNum=(TextField)findComponentById(ResourceTable.Id_phoneNum);inputPhoneNum.setTextInputType(InputAttribute.PATTERN_NUMBER);inputPhoneNum.addTextObserver(newText.TextObserver(){@OverridepublicvoidonTextUpdated(Strings,inti,inti1,inti2){if(s.length()==11){//TODO判断输入的是否是正确的电话号码,排除汉字、标点符号、英文字母等不是数字的输入(真);否则{ShapeElementshapeElement=newShapeElement(getContext(),ResourceTable.Graphic_background_disabled);button.setBackground(shapeElement);button.setClickable(false);}}});button.setClickedListener(l->{if(l。isClickable()){//TODO执行接口获取验证码,返回数据成功后跳转到验证码输入页面}});由于服务器上还没有部署后端程序,所以这里的接口调用暂时不写了。整个项目发布后,大家可以查看具体的源码,敬请期待!!!更多信息请访问:与华为官方共建鸿蒙科技社区https://harmonyos.51cto.com/#zz