成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

拋棄床的溫暖,只為了它丨云庫一款跑在鴻蒙系統上的應用

系統
文章由鴻蒙社區產出,想要了解更多內容請前往:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com/#zz

[[380860]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com/#zz

前文再續,章節上篇。

在篇一,對整個項目要做什么,達到什么樣的效果等做了簡單的分析。本節將從服務端API約定、登錄(沒有注冊,登錄即注冊)流程、長連接、華為云對象存儲OBS基本概念介紹等對整個項目的技術層面做詳細的介紹。

本節內容摘要:

1、約定服務端API返回結構

2、登錄流程

3、華為云對象存儲OBS介紹

4、HAP輸入手機號獲取驗證碼

約定服務端API返回結構 

封裝一個好的返回結構,使得我們在處理數據的時候能夠減少各種拆解。因此在初期搭建完服務端項目后,首要做的是封裝一套合理的返回數據結構,使API返回結構體大體相似。

1)使用Java Enum枚舉類,將公用的返回錯誤進行封裝,比如請求接口成功,請求接口失敗,登錄驗證成功等等。 

  1. package com.ming.harmonyos.photokit.conf; 
  2.  
  3. /** 
  4.  * 枚舉類對象 
  5.  */ 
  6. public enum StatusCode { 
  7.  
  8.     //公共 
  9.     SUCCESS(200, "成功"), 
  10.     FAILED(9999, "失敗"), 
  11.     UNKNOWN_ERROR(9998, "未知異常"), 
  12.     SYSTEM_ERROR(9997, "系統異常"), 
  13.  
  14.     REQUEST_PARAMETER_ERROR(1001, "請求參數錯誤"), 
  15.     REQUEST_ACCESS_TOKEN_ERROR(1002, "請求參數token值錯誤"), 
  16.  
  17.     //手機號校驗 
  18.     CHECK_CELL_PHONE_NUM_ERROR(2001, "手機號碼輸入錯誤"), 
  19.     LOGIN_VALID_CODE_ERROR(2002, "登錄驗證碼錯誤"), 
  20.     LOGOUT_ERROR(2003, "退出失敗"), 
  21.     LOGOUT_AUTH_ERROR(2004, "退出失敗,token不存在"); 
  22.  
  23.     /** 
  24.      * 狀態碼 
  25.      */ 
  26.     private int code; 
  27.  
  28.     /** 
  29.      * 狀態消息 
  30.      */ 
  31.     private String message; 
  32.  
  33.     StatusCode(int code, String message) { 
  34.         this.code = code; 
  35.         this.message = message; 
  36.     } 
  37.  
  38.     public int getCode() { 
  39.         return code; 
  40.     } 
  41.  
  42.     public String getMessage() { 
  43.         return message; 
  44.     } 

 2)、封裝一套API返回的數據結構

我目前使用的有兩種,一種是以true|false做請求狀態,另一種是以數字的形式做請求狀態。兩種各有千秋,第一種相對第二種的話要做到具體的異常定位需要在返回消息中加入異常碼。本項目只是簡單的示例項目,因此我選擇第二種,這種方便控制。 

  1. package com.ming.harmonyos.photokit.conf; 
  2.  
  3. import lombok.Data; 
  4.  
  5. import java.io.Serializable
  6.  
  7. /** 
  8.  * 返回結果類統一封裝 
  9.  */ 
  10. @Data 
  11. public class ApiResultInfo<T> implements Serializable { 
  12.  
  13.     /** 
  14.      * 狀態碼 
  15.      */ 
  16.     private Integer code; 
  17.     /** 
  18.      * 消息 
  19.      */ 
  20.     private String message; 
  21.  
  22.     /** 
  23.      * 數據對象 
  24.      */ 
  25.     private T data; 
  26.  
  27.     public ApiResultInfo() { 
  28.     } 
  29.  
  30.     public ApiResultInfo(Integer code, String message, T data) { 
  31.         this(); 
  32.         setCode(code); 
  33.         setMessage(message); 
  34.         setData(data); 
  35.     } 
  36.  
  37.     public static <T> ApiResultInfo<T> getFailedInstant(Integer code, String message, T data) { 
  38.         return new ApiResultInfo<>(code, message, data); 
  39.     } 
  40.  
  41.     public static <T> ApiResultInfo<T> getInstant(T data) { 
  42.         return new ApiResultInfo<>(StatusCode.SUCCESS.getCode(), 
  43.                 StatusCode.SUCCESS.getMessage(), data); 
  44.     } 

3)示例接口

這里只是一個登錄(同時也是注冊)接口,其他接口暫時未公開。

接口信息 

  1. 接口地址:http://xxx/yunku/login.do  
  2. 請求示例:http://xxx/yunku/login.do  
  3. 支持協議:HTTP/HTTPS  
  4. 請求方式:POST  
  5. 返回格式:UTF8 JSON 

請求參數 

 

返回示例 

  1.     "code": 200, 
  2.     "msg""success"
  3.     "data": { 
  4.         "authCode""xxxxxx"
  5.         "userInfo": { 
  6.             "iId": 1, 
  7.             "sPhone""13800000000"
  8.             "sNickName""yx_13800000000"
  9.            "sPath""http://xxxx/yx_default.png"
  10.            "dVolume": 20, 
  11.            "dUsedVolume": 5, 
  12.            "tEdit""2021-01-20"  
  13.         } 
  14.     } 

 返回參數 

 

登錄流程

登錄即注冊,用戶第一次登錄,驗證通過后將用戶信息以key-value的形式存入到Redis緩存中。如果是再次登錄則存入新值,用戶緩存有效期7天。  

 

華為云對象存儲OBS介紹

對象存儲服務(Object Storage Service,OBS)提供海量、安全、高可靠、低成本的數據存儲能力,可供用戶存儲任意類型和大小的數據。適合企業備份/歸檔、視頻點播、視頻監控等多種數據存儲場景。我們這里只是用于存儲多媒體文件。

對于現階段,我們只需要了解OBS的桶、對象兩個概念。桶是存儲對象的容器,對象是數據存儲的基本單位。可以對應我們系統的文件管理來看,桶相當于磁盤,比如D盤,在D盤根目錄下只能存在一個同類型的文件,而對象就相當于文件夾中的文件。

而云庫中,用于可以通過HAP創建多個云庫(桶),在云庫中上傳多媒體文件。

HAP輸入手機號獲取驗證碼

這也是云庫HAP的主頁面,啟動云庫HAP后,進入應用首先看到的界面。對于登錄頁面,大體都是一樣的,錄入框和交互按鈕是頁面主要呈現的組件,額外會添加一些Image和Text組件,這里我們僅使用下表中羅列的組件來構建頁面。 

 

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <DependentLayout 
  3.     xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  4.     ohos:height="match_parent" 
  5.     ohos:width="match_parent" 
  6.     ohos:background_element="#FFFFFF"
  7.     <Image 
  8.         ohos:id="$+id:logo" 
  9.         ohos:height="100vp" 
  10.         ohos:width="100vp" 
  11.         ohos:image_src="$media:logo" 
  12.         ohos:horizontal_center="true"/> 
  13.  
  14.     <Text 
  15.         ohos:id="$+id:hello" 
  16.         ohos:height="match_content" 
  17.         ohos:width="match_content" 
  18.         ohos:text="歡迎走近云庫" 
  19.         ohos:top_margin="40vp" 
  20.         ohos:left_margin="20vp" 
  21.         ohos:right_margin="20vp" 
  22.         ohos:text_size="30fp" 
  23.         ohos:below="$+id:logo"/> 
  24.  
  25.     <TextField 
  26.         ohos:id="$+id:phoneNum" 
  27.         ohos:height="match_content" 
  28.         ohos:width="match_parent" 
  29.         ohos:hint="請輸入手機號..." 
  30.         ohos:text_size="20fp" 
  31.         ohos:text_alignment="vertical_center" 
  32.         ohos:top_margin="10vp" 
  33.         ohos:left_margin="20vp" 
  34.         ohos:right_margin="20vp" 
  35.         ohos:top_padding="16vp" 
  36.         ohos:bottom_padding="16vp" 
  37.         ohos:basement="#E1E1D2" 
  38.         ohos:text_input_type="pattern_number" 
  39.         ohos:below="$+id:hello"/> 
  40.  
  41.     <Button 
  42.         ohos:id="$+id:get_valid_code_btn" 
  43.         ohos:height="match_content" 
  44.         ohos:width="match_parent" 
  45.         ohos:text="獲取驗證碼" 
  46.         ohos:text_size="20fp" 
  47.         ohos:bottom_margin="20vp" 
  48.         ohos:left_margin="20vp" 
  49.         ohos:right_margin="20vp" 
  50.         ohos:top_padding="12vp" 
  51.         ohos:bottom_padding="12vp" 
  52.         ohos:align_parent_bottom="true" 
  53.         ohos:text_color="#F2F2F2" 
  54.         ohos:background_element="$graphic:background_disabled"/> 
  55.  
  56. </DependentLayout> 

 

  1. Button button = (Button) findComponentById(ResourceTable.Id_get_valid_code_btn); 
  2. TextField inputPhoneNum = (TextField) findComponentById(ResourceTable.Id_phoneNum); 
  3. inputPhoneNum.setTextInputType(InputAttribute.PATTERN_NUMBER); 
  4. inputPhoneNum.addTextObserver(new Text.TextObserver() { 
  5.     @Override 
  6.     public void onTextUpdated(String s, int i, int i1, int i2) { 
  7.         if (s.length() == 11) { 
  8.             //TODO 判斷是否輸入的是正確的手機號, 排除輸入漢字、標點符號、英文字母等不是數字情況 
  9.             ShapeElement shapeElement = new ShapeElement(getContext(), ResourceTable.Graphic_background_login); 
  10.             button.setBackground(shapeElement); 
  11.             button.setClickable(true); 
  12.         } else { 
  13.             ShapeElement shapeElement = new ShapeElement(getContext(), ResourceTable.Graphic_background_disabled); 
  14.             button.setBackground(shapeElement); 
  15.             button.setClickable(false); 
  16.         } 
  17.     } 
  18. }); 
  19.  
  20. button.setClickedListener(l -> { 
  21.     if (l.isClickable()) { 
  22.         //TODO 執行獲取驗證碼接口,返回數據成功后跳轉到驗證碼輸入頁面 
  23.     } 
  24. }); 

由于后端程序還未部署到服務器上,這里接口調用暫時還未編寫。后續整個項目公開后,可以查看具體源碼,敬請期待!!!

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com/#zz 

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-01-29 15:47:21

鴻蒙HarmonyOS云庫

2021-01-07 11:32:43

鴻蒙HarmonyOS計算器

2023-10-06 14:27:10

Linux系統監控

2024-08-16 08:31:05

2011-09-19 14:45:18

iPhone應用軟件Doxo

2015-07-30 09:42:35

云計算云服務iBM

2018-07-23 14:46:28

辦公電話

2013-12-18 17:16:29

2014-01-13 15:00:51

InxiLinux硬件

2011-09-19 11:07:20

iPhone應用CardFlick

2021-08-31 07:54:23

數據庫選型

2010-03-04 09:25:48

Ubuntu VMwa

2013-11-26 10:51:08

開發應用創業移動應用

2012-04-28 10:57:27

Metro UI

2011-09-08 17:31:29

Steply社交圖片

2012-05-10 09:28:04

云計算應用程序

2014-06-27 14:53:06

應用App產品

2011-09-16 13:44:19

Android應用我要搜APP

2011-09-19 11:18:21

iPhone應用3do提醒應用

2016-09-18 16:16:39

Linux云服務應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 五月婷婷在线播放 | av免费网站在线 | 欧美日韩一区精品 | 欧美不卡 | 欧美在线视频一区 | 国产免费一区二区三区免费视频 | 成人免费在线观看 | 91xxx在线观看 | 国产91精品久久久久久久网曝门 | 久久免费精品视频 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 成人三级视频 | 欧美一级黄色片免费观看 | 天堂在线91 | 久久久久久免费观看 | 激情福利视频 | 久精品久久 | 精品福利在线 | 91在线看| 九九热免费在线观看 | 久久久久国产精品一区二区 | 日韩福利视频 | 九九亚洲 | 欧美精品久久 | 国产一区二区视频免费在线观看 | 欧美福利在线 | 国产成人a亚洲精品 | 成人综合一区二区 | 久久国产免费看 | 国产一区影院 | 久久久国产一区二区 | 国产成人精品一区二区三区网站观看 | 欧美成人一区二区三区 | 色在线视频网站 | 亚洲一区中文字幕 | 国产在线a | 日韩成人在线电影 | 91av在线视频观看 | 免费一级网站 | 草久久久 | av国产精品 |