抛弃床的温暖,只为了它丨云库一款跑在鸿蒙系统上的应用丨篇二

目录:

约定服务端API返回结构

登录流程

华为云对象存储OBS介绍

HAP输入手机号获取验证码

 

前文再续,章节上篇。

篇一,对整个项目要做什么,达到什么样的效果等做了简单的分析。本节将从服务端API约定、登录(没有注册,登录即注册)流程、长连接、华为云对象存储OBS基本概念介绍等对整个项目的技术层面做详细的介绍。

本节内容摘要:

       1、约定服务端API返回结构

       2、登录流程

       3、华为云对象存储OBS介绍

       4、HAP输入手机号获取验证码

抛弃床的温暖,只为了它丨云库一款跑在鸿蒙系统上的应用丨篇二约定服务端API返回结构

封装一个好的返回结构,使得我们在处理数据的时候能够减少各种拆解。因此在初期搭建完服务端项目后,首要做的是封装一套合理的返回数据结构,使API返回结构体大体相似。

1)使用Java Enum枚举类,将公用的返回错误进行封装,比如请求接口成功,请求接口失败,登录验证成功等等。

package com.ming.harmonyos.photokit.conf;

/**
 * 枚举类对象
 */
public enum StatusCode {

    //公共
    SUCCESS(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, "手机号码输入错误"),
    LOGIN_VALID_CODE_ERROR(2002, "登录验证码错误"),
    LOGOUT_ERROR(2003, "退出失败"),
    LOGOUT_AUTH_ERROR(2004, "退出失败,token不存在");

    /**
     * 状态码
     */
    private int code;

    /**
     * 状态消息
     */
    private String message;

    StatusCode(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}

2)、封装一套API返回的数据结构

我目前使用的有两种,一种是以true|false做请求状态,另一种是以数字的形式做请求状态。两种各有千秋,第一种相对第二种的话要做到具体的异常定位需要在返回消息中加入异常码。本项目只是简单的示例项目,因此我选择第二种,这种方便控制。

package com.ming.harmonyos.photokit.conf;

import lombok.Data;

import java.io.Serializable;

/**
 * 返回结果类统一封装
 */
@Data
public class ApiResultInfo<T> implements Serializable {

    /**
     * 状态码
     */
    private Integer code;
    /**
     * 消息
     */
    private String message;

    /**
     * 数据对象
     */
    private T data;

    public ApiResultInfo() {
    }

    public ApiResultInfo(Integer code, String message, T data) {
        this();
        setCode(code);
        setMessage(message);
        setData(data);
    }

    public static <T> ApiResultInfo<T> getFailedInstant(Integer code, String message, T data) {
        return new ApiResultInfo<>(code, message, data);
    }

    public static <T> ApiResultInfo<T> getInstant(T data) {
        return new ApiResultInfo<>(StatusCode.SUCCESS.getCode(),
                StatusCode.SUCCESS.getMessage(), data);
    }
}

3)示例接口

这里只是一个登录(同时也是注册)接口,其他接口暂时未公开。
接口信息

接口地址:http://xxx/yunku/login.do 
请求示例:http://xxx/yunku/login.do 
支持协议:HTTP/HTTPS 
请求方式:POST 
返回格式:UTF8 JSON

请求参数

名称 类型 必填 示例值/默认值 说明
_cellPhoneNum String 13800000000 注册登录手机号
_validCode String 546655 获取的短信验证码

返回示例

{
    "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" 
        }
    }
}

返回参数

名称 类型 示例值 说明
authCode String d20a3965-5eb8-484b-84ea-e1e4d755a223 授权码
iId int 1 用户标识码
sPhone String 13800000000 手机号(也称账号)
sNickName String yx_13800000000 昵称(可修改,默认yx_手机号组合)
sPath String http://xxx/yx_default.png 头像(可修改,默认yx_default.png)
dVolume Double 20 存储容量总量
dUsedVolume Double 5 已使用存储容量
tEdit DateTime 2021-01-20 注册日期

登录流程

登录即注册,用户第一次登录,验证通过后将用户信息以key-value的形式存入到Redis缓存中。如果是再次登录则存入新值,用户缓存有效期7天。

抛弃床的温暖,只为了它丨云库一款跑在鸿蒙系统上的应用丨篇二

华为云对象存储OBS介绍

对象存储服务(Object Storage Service,OBS)提供海量、安全、高可靠、低成本的数据存储能力,可供用户存储任意类型和大小的数据。适合企业备份/归档、视频点播、视频监控等多种数据存储场景。我们这里只是用于存储多媒体文件。

对于现阶段,我们只需要了解OBS的桶、对象两个概念。桶是存储对象的容器,对象是数据存储的基本单位。可以对应我们系统的文件管理来看,桶相当于磁盘,比如D盘,在D盘根目录下只能存在一个同类型的文件,而对象就相当于文件夹中的文件。

而云库中,用于可以通过HAP创建多个云库(桶),在云库中上传多媒体文件。

查看更多章节>>>

作者:云昌白晓明

想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com

 

posted @ 2021-02-04 13:45  HarmonyOS技术社区  阅读(174)  评论(0编辑  收藏  举报