精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

初探APP架構之后端接口設計方案

移動開發
APP對服務器端要求是比較嚴格的,在移動端有限的帶寬條件下,要求接口響應速度要快,所有在開發過程中盡量選擇效率高的框架,對數據要求也比較嚴格,app需要什么數據就傳什么數據,不可多傳,過多的數據量影響處理速度,最重要的是影響傳輸效率。接口要規范,以面向對象的思想設計接口。

App與服務器的接口設計需要考慮很多地方,這里整理項目中遇到的和使用到的一些接口設計原則,拋磚引玉。 

Picture

1 設計思想

APP對服務器端要求是比較嚴格的,在移動端有限的帶寬條件下,要求接口響應速度要快,所有在開發過程中盡量選擇效率高的框架,對數據要求也比較嚴格,app需要什么數據就傳什么數據,不可多傳,過多的數據量影響處理速度,最重要的是影響傳輸效率。接口要規范,以面向對象的思想設計接口。

2 app后端和java web后端的區別

由于之前開發過安卓,現在也在開發java web 后端,所以這里總結一下。發現有的做java web 后端的同學并不太清楚。

其實對于后臺開發來說原理都差不多。只不過app的后臺開發和web不一樣的地方在于傳輸數據格式不一樣,一般來說web訪問后返回的是一個html頁面,少部分是json格式;而一般app的后臺開發大部分直接傳json格式數據(也有不是json格式的,看項目的選擇,但一般來說都是json),少部分會直接返回html5的頁面。

還有一個不同點在于登錄驗證和數據加密,一般web是使用session驗證登錄狀態,而app則使用token來驗證登錄狀態(token是自己定義的一個和用戶ID相關的加密字符串,傳入后臺后從數據庫查詢用戶信息)。還有如果對安全性要求較高,app傳輸數據時可能會對數據進行加密,而web一般沒有這一步,web的加密一般是使用https。

至于說android和ios的開發環境不一樣那是指的app開發,和后臺無關。app的后臺和java web的后臺沒有本質區別。app的一個后臺可以即提供給android,也可以同時提供給iOS,它就是把app提交的數據處理后插入數據庫和從數據庫查出數據處理后傳給app。

3 安全機制的設計

3.1 服務端token方式-類似session

現在,大部分App的接口都采用RESTful架構,RESTFul最重要的一個設計原則就是,客戶端與服務器的交互在請求之間是無狀態的,也就是說,當涉及到用戶狀態時,每次請求都要帶上身份驗證信息。實現上,大部分都采用token的認證方式,一般流程是:

  • 用戶用密碼登錄成功后,服務器返回token給客戶端;
  • 客戶端將token保存在本地,發起后續的相關請求時,將token發回給服務器;

服務器檢查token的有效性,有效則返回數據,若無效,分兩種情況:

  • token錯誤,這時需要用戶重新登錄,獲取正確的token

那么這種方式的缺點就是token過期的問題,客戶端用戶調接口時有可能登入已經過期了,解決的辦法就是接口規范了,也就是后臺要返回用戶登入是否過期的字段,客戶端通過這個字段判斷是否跳轉到登入頁面,再發起一次認證請求,獲取新的token。

然而,此種驗證方式存在一個安全性問題:當登錄接口被劫持時,黑客就獲取到了用戶密碼和token,后續則可以對該用戶做任何事情了。用戶只有修改密碼才能奪回控制權。

如何優化呢?***種解決方案是采用HTTPS。HTTPS在HTTP的基礎上添加了SSL安全協議,自動對數據進行了壓縮加密,在一定程序可以防止監聽、防止劫持、防止重發,安全性可以提高很多。不過,SSL也不是絕對安全的,也存在被劫持的可能。另外,服務器對HTTPS的配置相對有點復雜,還需要到CA申請證書,而且一般還是收費的。而且,HTTPS效率也比較低。一般,只有安全要求比較高的系統才會采用HTTPS,比如銀行。而大部分對安全要求沒那么高的App還是采用HTTP的方式。

我們目前的做法是給每個接口都添加簽名。給客戶端分配一個密鑰,每次請求接口時,將密鑰和所有參數組合成源串,根據簽名算法生成簽名值,發送請求時將簽名一起發送給服務器驗證。類似的實現可參考OAuth1.0的簽名算法。這樣,黑客不知道密鑰,不知道簽名算法,就算攔截到登錄接口,后續請求也無法成功操作。不過,因為簽名算法比較麻煩,而且容易出錯,只適合對內的接口。如果你們的接口屬于開放的API,則不太適合這種簽名認證的方式了,建議還是使用OAuth2.0的認證機制。

我們也給每個端分配一個appKey,比如Android、iOS、微信三端,每個端分別分配一個appKey和一個密鑰。沒有傳appKey的請求將報錯,傳錯了appKey的請求也將報錯。這樣,安全性方面又加多了一層防御,同時也方便對不同端做一些不同的處理策略。

3.2 客戶端token方式

客戶端生成token傳給服務端校驗,一致就通過用戶驗證。

通過時間戳+用戶唯一標識+MD5加密=token(算法自定義),并且把時間戳傳給后臺,后臺通 過后臺系統的時間戳和客戶端傳過去的時間戳可以規定當前用戶在1分鐘內這次接口可以正常使用,也就是 說,當黑客從路由獲取到連接后,只有1分鐘的時間可以使用這次接口(時間后臺可以自定義),這樣很大程度 上確保了接口的安全性,同時,這種方式也可以有效的解決用戶登入過期,也就是使用session的方式的不足,但是有個問題,如果客戶端和服務端系統時間不一致,就不能這樣用了,所以這個時間戳如何獲取,也是一個關鍵點,可能通過接口從后臺接口獲取,也可以使用其他方式,有好的建議可以一起探討

3.3 手機驗證碼登陸

現在越來越多App取消了密碼登錄,而采用手機號+短信驗證碼的登錄方式,我在當前的項目中也采用了這種登錄方式。這種登錄方式有幾種好處:

  • 不需要注冊,不需要修改密碼,也不需要因為忘記密碼而重置密碼的操作了;
  • 用戶不再需要記住密碼了,也不怕密碼泄露的問題了;
  • 相對于密碼登錄其安全性明顯提高了。

4 接口數據的設計

接口的數據一般都采用JSON格式進行傳輸,不過,需要注意的是,JSON的值只有六種數據類型:

  • Number:整數或浮點數
  • String:字符串
  • Boolean:true 或 false
  • Array:數組包含在方括號[]中
  • Object:對象包含在大括號{}中
  • Null:空類型

所以,傳輸的數據類型不能超過這六種數據類型。以前,我們曾經試過傳輸Date類型,它會轉為類似于"2016年1月7日 09時17分42秒 GMT+08:00"這樣的字符串,這在轉換時會產生問題,不同的解析庫解析方式可能不同,有的可能會轉亂,有的可能直接異常了。要避免出錯,必須做特殊處理,自己手動去做解析。為了根除這種問題,***的解決方案是用毫秒數表示日期。

另外,以前的項目中還出現過字符串的"true"和"false",或者字符串的數字,甚至還出現過字符串的"null",導致解析錯誤,尤其是"null",導致App奔潰,后來查了好久才查出來是該問題導致的。這都是因為服務端對數據沒處理好,導致有些數據轉為了字符串。所以,在客戶端,也不能完全信任服務端傳回的數據都是對的,需要對所有異常情況都做相應處理。

服務器返回的數據結構,一般為:

  1. { code:0, message: "success", data: { key1: value1, key2: value2, ... } } 
  • code: 返回碼,0表示成功,非0表示各種不同的錯誤
  • message: 描述信息,成功時為"success",錯誤時則是錯誤信息
  • data: 成功時返回的數據,類型為對象或數組

不同錯誤需要定義不同的返回碼,屬于客戶端的錯誤和服務端的錯誤也要區分,比如1XX表示客戶端的錯誤,2XX表示服務端的錯誤。這里舉幾個例子:

  • 0:成功
  • 100:請求錯誤
  • 101:缺少appKey
  • 102:缺少簽名
  • 103:缺少參數
  • 200:服務器出錯
  • 201:服務不可用
  • 202:服務器正在重啟

錯誤信息一般有兩種用途:一是客戶端開發人員調試時看具體是什么錯誤;二是作為App錯誤提示直接展示給用戶看。主要還是作為App錯誤提示,直接展示給用戶看的。所以,大部分都是簡短的提示信息。

data字段只在請求成功時才會有數據返回的。數據類型限定為對象或數組,當請求需要的數據為單個對象時則傳回對象,當請求需要的數據是列表時,則為某個對象的數組。這里需要注意的就是,不要將data傳入字符串或數字,即使請求需要的數據只有一個,比如token,那返回的data應該為: 

  1. // 正確  
  2. data: { token: 123456 }  
  3. // 錯誤  
  4. data: 123456 

常用的HTTP狀態碼有: 

  1. 200 OK 
  2. 201 Created 
  3. 204 No Content 
  4. 304 Not Modified 
  5. 400 Bad Request 
  6. 401 Unauthorized 
  7. 403 Forbidden 
  8. 404 Not Found 
  9. 405 Method Not Allowed 
  10. 410 Gone 
  11. 415 Unsupported Media Type 
  12. 422 Unprocessable Entity 
  13. 429 Too Many Requests 
  14. 500 Internal Server Error 
  15. 503 Service Unavailable 

5 接口版本的設計

接口不可能永遠不變,它會隨著需求的變化而做出相應的變動。接口的變化一般會有幾種:

  • 數據的變化,比如增加了舊版本不支持的數據類型
  • 參數的變化,比如新增了參數
  • 接口的廢棄,不再使用該接口了

為了適應這些變化,必須得做接口版本的設計。實現上,一般有兩種做法:

  • 每個接口有各自的版本,一般為接口添加個version的參數。
  • 整個接口系統有統一的版本,一般在URL中添加版本號,比如http://api.demo.com/v2

大部分情況下會采用***種方式,當某一個接口有變動時,在這個接口上疊加版本號,并兼容舊版本。App的新版本開發傳參時則將傳入新版本的version。

如果整個接口系統的根基都發生變動的話,比如微博API,從OAuth1.0升級到OAuth2.0,整個API都進行了升級。

有時候,一個接口的變動還會影響到其他接口,但做的時候不一定能發現。因此,***還要有一套完善的測試機制保證每次接口變更都能測試到所有相關層面。

6 撰寫接口文檔

文檔先行。

好的文檔,和好的接口同樣重要。接口文檔需要被很容易地找到和訪問。大部分開發者會在進行接口開發之前,檢查并查看接口文檔。如果這些接口文檔是寫在PDF文檔里,或者需要登錄才能查看,那將不僅僅是難于查找,還不利于搜索。

接口文檔應該描述完整的 Request/Response Cycle,并附上具體的例子。***是,這些例子應該是真實可以訪問的,比如把鏈接復制到瀏覽器里執行,或者用curl執行。GitHub 和 Stripe 的接口文檔都寫得很不錯。

一旦你發布了一個API,那意味著,在沒有通知調用者的情況下,你有責任不去破壞該接口的已有功能。如果你在今后修改該接口,需要及時更新接口文檔,并且在發布接口的更新之前,及時通知你的接口調用者。

責任編輯:未麗燕 來源: 安卓巴士
相關推薦

2024-10-17 08:26:53

ELKmongodb方案

2024-05-17 08:38:22

2013-11-25 11:25:05

產品設計App設計產品經理

2010-09-08 16:17:37

SIP協議棧

2012-07-11 10:49:34

鮑爾默Surface

2022-07-05 09:38:47

模型RBACABAC

2009-10-12 16:50:00

2009-10-19 13:50:57

布線設計方案

2025-09-29 02:00:00

2016-01-11 11:20:43

2009-10-19 14:39:10

2019-03-13 16:09:47

VMware虛擬化服務器

2024-08-05 09:29:00

前端接口請求

2012-08-21 09:42:24

設計架構設計原則

2009-11-19 15:43:02

路由器設計

2009-02-09 10:41:00

IP城域網設計規劃

2025-03-03 00:45:00

2023-02-24 08:27:56

RabbitMQKafka架構

2021-01-18 10:33:14

后端開源接口

2010-01-22 16:38:22

SDH光接口板
點贊
收藏

51CTO技術棧公眾號

heyzo亚洲| 欧美大片国产精品| 国产欧美欧洲| 亚洲视频 欧美视频| jvid福利在线一区二区| 777xxx欧美| 国产精品国产对白熟妇| 黄色的视频在线免费观看| 国产成人毛片| 亚洲柠檬福利资源导航| 国模精品一区二区三区| 黄色一区二区视频| 欧美69视频| 日韩国产在线看| 中文字幕第38页| 好吊色视频一区二区| 先锋影音久久| 久久综合九色九九| 女人被狂躁c到高潮| 香蕉成人在线| 99久久久久久99| 久久精品中文字幕电影| 好吊色视频一区二区三区| 日韩在线短视频| 国产精品久久久久7777按摩 | 成人香蕉视频| 亚洲精品写真福利| 神马影院一区二区三区| 亚洲av无码乱码在线观看性色| 久久先锋资源| 午夜精品福利在线观看| 热99这里只有精品| 日本视频在线观看| 久久九九影视网| 99在线看视频| 国产精品丝袜黑色高跟鞋| 麻豆九一精品爱看视频在线观看免费| 九色91av视频| 粉嫩av性色av蜜臀av网站| 国产欧美日韩在线一区二区| 亚洲国产99精品国自产| 一区二区三区的久久的视频| 天天色综合久久| 国产suv一区二区三区88区| 成人免费午夜电影| 亚洲色成人www永久网站| 99伊人成综合| 欧美激情三级免费| 国产三级国产精品国产国在线观看| 欧美偷拍自拍| 日韩精品欧美国产精品忘忧草| 亚洲区 欧美区| 日韩毛片网站| 欧美日韩免费不卡视频一区二区三区 | 97精品在线观看| 久久久精品一区二区涩爱| 久久福利在线| 欧美视频日韩视频| 欧美这里只有精品| 毛片网站在线看| 亚洲一区在线播放| 欧美极品少妇无套实战| 神马午夜伦理不卡 | 黄频视频在线观看| 午夜伦理在线| 亚洲日本在线观看| 国产精品一区二区三区精品| 国产aⅴ爽av久久久久成人| 国产视频久久| 日本久久久久久| 白丝女仆被免费网站| 日本亚洲不卡| 97视频在线观看视频免费视频| 日本免费a视频| 肉体视频在线| 亚洲精品欧美激情| 国产又粗又猛又爽又黄的网站| 日韩欧美小视频| 亚洲视频一区在线观看| 久久久久久久久久久久久久一区| 天堂中文字幕av| 久久综合久久99| 丝袜美腿玉足3d专区一区| 999在线视频| 亚洲视频一区在线| 亚洲在线欧美| 黄色美女视频在线观看| 欧美视频在线观看免费| 天堂社区在线视频| 国产69精品久久久久按摩| 91精品一区二区三区久久久久久| 深夜视频在线观看| 精品国产一区二区三区成人影院 | 一区二区在线免费观看| 极品粉嫩国产18尤物| 欧洲亚洲两性| 91极品视觉盛宴| 五月天丁香花婷婷| 久久中文资源| 日韩网站免费观看高清| 国产亚洲精品码| 老鸭窝91久久精品色噜噜导演| 国产精品视频久| 国内毛片毛片毛片毛片| 久久久久久97三级| 中文字幕在线观看一区二区三区| av资源中文在线天堂| 欧美亚洲愉拍一区二区| 污污免费在线观看| 青草国产精品| 欧美激情视频在线| 中文字幕人妻一区二区在线视频| 国产剧情一区二区| 久久国产精品 国产精品| 色影院视频在线| 色综合久久九月婷婷色综合| 99久久综合网| 日韩情爱电影在线观看| 啊v视频在线一区二区三区| 日韩欧美不卡视频| 国产精品一区二区在线播放| 日韩av在线电影观看| 日日骚av一区二区| 日本最新不卡在线| 国产亚洲精品美女久久久m| 亚洲综合一区中| 久久久另类综合| 天天做天天躁天天躁| av在线资源| 日韩你懂的在线播放| 人妻aⅴ无码一区二区三区| 韩国成人漫画| 精品欧美黑人一区二区三区| 国产极品视频在线观看| 久久国产日韩| 精品国产综合| 少女频道在线观看免费播放电视剧| 91久久精品一区二区| 精品久久久久久无码人妻| 国产最新精品| 热99精品只有里视频精品| 好男人www在线视频| 亚洲欧美日韩综合aⅴ视频| 任你操这里只有精品| 岛国av在线网站| 欧美一级久久久久久久大片| 青青青视频在线播放| 日韩在线高清| 欧美在线视频导航| 亚洲国产www| 一区二区免费看| 国内精品在线观看视频| 在这里有精品| x99av成人免费| 亚洲国产无线乱码在线观看| 亚洲国产精品av| 色综合天天色综合| 欧美a一级片| 日韩在线视频观看| 人与动物性xxxx| 日韩电影免费在线观看| 国产精品99久久久久久久久久久久 | 在线观看免费成人| 日本国产一级片| 999久久久精品国产| 91精品综合久久久久久五月天| 麻豆tv在线| 日韩一区二区电影在线| 91精品久久久久久久久久久久| 日本美女一区二区三区视频| 一本一生久久a久久精品综合蜜| 国产一区二区色噜噜| 久久精品精品电影网| www.五月婷婷| 久久天堂av综合合色蜜桃网| 青青草视频在线免费播放| 亚洲aa在线| 国产精品影院在线观看| jizz性欧美| 日韩视频123| 九热这里只有精品| 久久久午夜精品理论片中文字幕| 国产又黄又猛又粗| 亚洲精品久久| 精品久久久三级| 日本不卡网站| 9191成人精品久久| 欧美精品成人久久| 91在线视频网址| 91欧美视频在线| 欧美三级午夜理伦三级中文幕| 精品一区久久久| 欧美aa在线观看| 亚洲色图色老头| 国产精品久久免费| 亚洲在线视频网站| 久久成人激情视频| 久久99蜜桃精品| 国产女主播av| 精品国产18久久久久久二百| 国产91精品视频在线观看| www.成人.com| 亚洲第一精品自拍| 中文字幕一区二区人妻痴汉电车| 国产欧美日韩在线| 性生交大片免费看l| 日日夜夜一区二区| 亚洲国产综合自拍| 牛牛视频精品一区二区不卡| 青青久久av北条麻妃黑人| 午夜伦全在线观看| 亚洲免费视频观看| 日本一区二区三区久久| 亚洲观看高清完整版在线观看| 国产一二三四视频| 91在线观看视频| aaaaaaaa毛片| 久久一区中文字幕| 免费拍拍拍网站| 888久久久| 少妇免费毛片久久久久久久久 | aa视频在线观看| 久久久精品国产| 高h视频在线| 国产视频精品免费播放| 亚洲av无码国产精品永久一区| 欧美中文字幕一区二区三区亚洲| 日韩免费一级片| 亚洲日本中文字幕区| 男女全黄做爰文章| 久久久久国产精品免费免费搜索| 在线观看亚洲免费视频| 欧美熟妇乱码在线一区| 黑人巨大精品欧美一区二区免费 | 日韩欧美自拍| 涩涩涩999| 国产精品欧美三级在线观看| 韩国一区二区三区美女美女秀| 清纯唯美激情亚洲| 成人黄色免费看| 丁香花在线影院| 欧美国产日韩视频| aaa在线观看| 亚洲欧美日韩视频一区| 四虎免费在线观看| 精品99一区二区| 免费国产黄色片| 精品久久人人做人人爰| 亚洲h视频在线观看| 日韩一区二区精品葵司在线| 91资源在线视频| 国产三级欧美三级| 国产精品无码一区二区三区免费| www.亚洲在线| av黄色一级片| 91年精品国产| 国产日韩视频一区| 不卡电影一区二区三区| 无码国产精品一区二区免费式直播 | 亚洲卡通欧美制服中文| 欧美日韩精品亚洲精品| 亚洲制服丝袜av| 日韩欧美亚洲视频| 亚洲电影第三页| 国产精品乱子伦| 欧美日韩亚洲成人| 青花影视在线观看免费高清| 亚洲精品视频在线看| 国产亚洲第一页| 一本色道久久综合亚洲aⅴ蜜桃| 中文字幕免费观看| 欧美天堂亚洲电影院在线播放| 一级黄色片在线播放| 日韩小视频在线观看专区| 日本韩国免费观看| 亚洲精品一区中文字幕乱码| 高清中文字幕一区二区三区| x99av成人免费| 乱插在线www| 人九九综合九九宗合| 男人亚洲天堂| 国产福利久久精品| 欧美xxxx做受欧美护士| 国产狼人综合免费视频| 99久久人爽人人添人人澡| 国产精品91免费在线| 四虎精品在线观看| 国产精品久久国产精品| 国产永久精品大片wwwapp| 婷婷视频在线播放| 欧美黄污视频| 免费国产成人av| 欧美日韩一区二区三区四区在线观看| 日本手机在线视频| 蜜乳av一区二区三区| 欧美熟妇精品一区二区| 久久精品一区二区三区不卡牛牛| 黄色香蕉视频在线观看| 午夜在线成人av| 在线观看视频中文字幕| 亚洲激情视频在线| 久草福利在线视频| 欧美激情视频三区| 台湾佬中文娱乐久久久| 成人av.网址在线网站| 老牛精品亚洲成av人片| 一区二区精品视频| 国产欧美午夜| 欧美大片久久久| 久久精品欧美一区二区三区不卡| 中文国语毛片高清视频| 欧美性感美女h网站在线观看免费| 中文字幕在线视频第一页| 日韩av网址在线| 调教一区二区| 国产色视频一区| 国产99精品| 狠狠干 狠狠操| 国产高清精品在线| 污污视频在线免费| 午夜综合激情| 日本xxxx免费| 中文字幕av一区二区三区高| www.美色吧.com| 国产精品美女久久久久久2018 | 欧美日韩中文字幕一区二区三区| 免费拍拍拍网站| 激情综合色丁香一区二区| 无码人妻精品一区二区中文| 一区二区三区日韩欧美精品| 国产一区二区三区成人| 亚洲偷熟乱区亚洲香蕉av| 日本在线视频网址| 91精品久久久久久久久中文字幕| 亚洲三级网址| 99爱视频在线| 国产成人免费高清| 加勒比婷婷色综合久久| 欧美日韩国产综合视频在线观看| 手机福利在线| 欧美激情视频播放| 国产不卡精品| 青青草影院在线观看| 久久午夜精品| 中文字幕 欧美日韩| 国产三级欧美三级| 免费观看日批视频| 亚洲一区二区精品| 欧美日韩大片| 日本一区二区三区视频在线观看 | 国产又粗又黄视频| 日韩在线观看免费全| 精品免费av一区二区三区| 日韩电影大全在线观看| 免费在线成人| 国产精品无码久久久久一区二区| 福利一区视频在线观看| 国产农村妇女毛片精品| 欧美成人激情视频| 国产视频一区二| 六月婷婷激情综合| 成人午夜激情视频| 久久99精品波多结衣一区| 亚洲激情免费观看| 日韩伦理在线一区| 精品综合久久| 极品av少妇一区二区| 亚洲の无码国产の无码步美| 性做久久久久久久免费看| 国内精品久久久久久久久久久| 九九热精品在线| 国产极品久久久久久久久波多结野| 国产一区精品在线| 狠狠色丁香久久综合频道| 人妻巨大乳一二三区| 亚洲专区一二三| 午夜视频免费在线| 欧美激情伊人电影| 免费看男男www网站入口在线| 69久久夜色精品国产69乱青草| 久久中文字幕一区二区| 国产98在线|日韩| 亚洲一区国产一区| www.555国产精品免费| 亚洲三级在线免费观看| 狠狠人妻久久久久久综合麻豆| 性色av一区二区三区| 小嫩嫩12欧美| 超碰在线公开97| 国产无人区一区二区三区| 中文字幕一区二区三区四区视频| 中文字幕成人精品久久不卡| 99视频这里有精品| 99亚洲国产精品| 国产成人综合在线播放| 好吊操这里只有精品| 国产丝袜视频一区| 欧美久久一区二区三区| 福利在线一区二区| 国产精品色呦呦|