app後端伺服器開發小結
本文來自圖靈社群 by fairjm
轉截請註明出處
app的API與網站使用的API較大的區別是其生命週期更長.API的修改需要做到向後相容.
app的API設計要考慮到app的版本問題.API本身需要可以演化.
怎麼拿到App的版本?
這不是一個技術問題而是一個設計問題,需要和app開發協商.
比如User-Agent欄位,讓app傳送請求都帶上一些標誌.
後端建議做成一個工具類,可以從Request中抽取這些資料.
比如:
public AppInfo getAppInfoFromRequest(Request request) {
....
}
AppInfo
中需要包含系統標識,app標識(應用在一個伺服器服務多個app的情況下)以及app版本.比如
public class AppInfo {
private int systemType;
private int appType;
private String appVersion;
...
}
public enum SystemType {
ANDROID(0),
IOS(1),
WP(2);
private int id;
.....
}
public enum AppType {
APP1(0),
APP2(1);
private int id;
...
}
有些時候可能app內的webview也要對app做這些判斷
對於安卓可以,一些webview的請求可能無法自定義UA 可以通過X-Requeted-With
來判斷
但這樣只能判斷出系統和App型別 版本無法知道
API的演化
這是app端也要做的事.
如果是用JSON
的資料,需要app端做JSON物件增加屬性時的相容
舉個例子 如果移動端用jackson做反序列可以讓他們指定一下JsonIgnoreProperties
或者在ObjectMapper中進行配置
objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false)
對於只返回一個String
或者返回JSON Array
的情況,務必也用JSON Object
包裹一下,以免以後需要加屬性造成沒地方可加的尷尬.
對於無法演化的情況,比如app那邊介面大改,已有的介面不能符合,一些欄位的意義改變的情況,可以在API後加上/v2
的形式或者在請求引數中加上?version=2
的方式,看個人喜好.
WebView使用場景
適合使用WebView的頁面是版本無關的.
比如一個頁面,在1.1版本中主色調是綠色,在1.2版本中是紅色,在1.3版本中是黃色.以後再改變新版本樣式但需要老版本保持不變.對於這種不同的版本需求不同,為何不用native來做?
工作中最多的一次一個url對應了6個頁面,本來挺簡單的一個action因為要相容2個app的3個版本做成了一大坨.
如果是因為工作量的問題,建議頁面的地址由後端提供API給,而不是在移動端寫死.
新技術推動
react native
之類的技術推動下,後端的一些工作就能輕鬆很多了.
相關文章
- APP後端開發雜談APP後端
- 移動端開發小結
- 前後端開發流程總結後端
- 移動端開發小結(實戰)
- 基於後端雲微信小程式開發後端微信小程式
- python後端開發面試總結Python後端面試
- App《最美詩詞》開發 -- Java後端(整合框架)APPJava後端框架
- app後端選擇什麼伺服器APP後端伺服器
- 軟體開發:app軟體開發,pc端軟體開發,微商城/小程式開發APP
- XpmJS —— 小程式後端開發思考和實踐JS後端
- 移動社交App服務端開發總結APP服務端
- apicloud結合聚雲網後端雲開發app之註冊實現APICloud後端APP
- golang 後端技術開發必備總結Golang後端
- Swift 後端開發Swift後端
- 伺服器後端開發系列——《開源RTMFP協議媒體伺服器Cumulus》伺服器後端協議
- 7 天開發後臺系統技術小結
- Tlias-後端開發後端
- Flutter 開發小結Flutter
- django開發小結Django
- ocx開發小結.
- 伺服器後端開發系列——《實戰Nginx高效能Web伺服器》伺服器後端NginxWeb
- 服務端開發小感服務端
- 前後端分離後模組開發後端
- 後端開發怎麼學?後端
- 什麼是後端開發?後端
- JAVA後端開發規範Java後端
- 校園集市小程式開發-系統架構與Django後端架構Django後端
- 移動端App開發 - 01 - 開篇APP
- 【心得】Lattice Diamond 後端約束實戰小結後端
- “圖解伺服器端網路架構”小結圖解伺服器架構
- 小程式開發總結
- Vue元件開發小結Vue元件
- DApp設計與開發 課程筆記(六):NFT交易市場後端開發APP筆記後端
- uniapp+unicloud開發一個網頁端,小程式端,APP端,桌面端的部落格CMS系統——萬能的三三APPCloud網頁
- Flask後端開發(二) - 功能實現和專案總結Flask後端
- app後端和web後端的區別APP後端Web
- 教育類APP開發小知識APP
- 線上漫畫小程式app開發APP