APP資料介面開發的一些經驗

2022-02-09 23:26:34 字數 2114 閱讀 7423

剛接到這樣的任務時,沒有感覺到任何壓力,不就是給移動端應用提供資料嗎?那邊發來引數,這邊處理資料,返回json。做**開發時經常使用ajax請求後台資料,不就是這麼回事嗎。於是,在確認完需求後就開始幹了,很快,進入聯調階段,這個時候各種問題來了,忙得不可開交。吃一塹,長一智,專案結束後總結了下,大致分為以下幾點:

一、什麼時候應該增加介面。

一般乙個頁面不存在二次請求的需求時,使用乙個介面,像一般的詳情頁,個人資訊頁等;頁面單一功能又需要二次請求的,像帶分頁功能的列表頁,使用乙個介面;頁面含多個功能,其中有乙個需要二次請求的,則需要定義多個介面了,比如個人資訊頁下帶乙個待辦事項的列表,又支援分頁,那如果乙個介面返回全部資訊的話,以後每次翻頁都要重新整理個人資訊內容,這樣就造成了不必要的資訊傳遞。

二、 應該努力讓介面的url看上去易懂又美觀。

三、引數與返回值。

先說引數,筆者目前的做法是一般查詢採用url傳參,增改採用post傳遞json字串提交資料,刪除同樣使用post方式。再說返回值,我們在專案中所有介面統一返回josn資料,並且約定乙個格式,比如這個json物件含三個key,分別是data,msg和status,分別代表了返回的資料,data可能是物件或者陣列,請求反饋資訊和反饋狀態碼,這樣就不用每個介面都說明一遍了。再談一些細節,在高階語言中,資料有多種型別,string,int,datetime等等。而序列化為json後,全部變為字串,這個時候沒有給值的字段就需要注意一下,像值型別,為可空時,序列化後值直接是null表示,沒有引號;為不可空時,值為預設值,同樣沒有引號,而datetime則帶引號,"0001-01-01t00:00:00";而像引用型別string,無值時,序列化後也變成null,而不是空串"",要想用空串""表示,必須給乙個預設值,如string.empty,說這點是因為當時ios告訴我說字段值返回null時,他們那邊報錯。還有一種情況是之前遇到過的,就是數值型別的精度問題,當時介面返回乙個**字段,伺服器端當然用decimal型別,並且保留兩位小數,但是ios端接收到的值小數點後卻多出很多位,而android沒有任何問題,最後只好在序列化前先轉成字串型別。其它需要包含小數字的數值型別當小數點後全是0時,序列化變為整型,這種情況同樣需要先轉為字串再序列化。關於datetime型別,在作為增改引數接收時,就是反序列化後要插入到資料庫,如果你正好使用了sql server,又使用了datetime型別,請注意它的範圍是1753-01-01 00:00:00 到9999-12-31 23:59:59,而空串轉為時間為"0001-01-01 00:00:00",會報異常。最後,筆者感覺,是不是沒有特殊情況,所有欄位都可以給移動端返回字串呢,像時間型別,手機上要顯示到日,我就不返回時分秒了,以字串型別返回,這樣以後產品說要顯示時分秒,直接在後台處理下就ok了,是不是這樣的?

四、介面如何聯調。

這裡的聯調包含兩層含義,一是vs環境下的遠端除錯,這個具體方法在網上有很多,在這就不多說了。另乙個含義就是和移動端聯合測試軟體功能。這次專案並沒有真正遠端除錯幾次,因為記錄了詳細的除錯日誌,所以大部分問題都能很快的定位。除錯日誌一般都包含了兩項內容:當前環境下的關鍵變數值及當前方法的資訊。

五、錯誤處理和返回錯誤碼。

首先,切忌把異常直接拋給呼叫者。因為這樣不論是對體驗還是定位錯誤都沒有任何益處,而是應該在後台捕獲,並記錄詳細的日誌,然後定義一套全域性的錯誤碼,返回對應的錯誤碼給介面呼叫者。關於異常的捕獲應該在**處理,個人覺得但應該不是最佳,最外層應該用try catch包裹,並記錄日誌,保證異常不會丟擲到呼叫方,其它位置如果有非託管資源的使用,應該捕獲,然後記錄日誌,釋放資源,並繼續把錯誤向上拋。

六、介面文件。

提到寫文件,程式設計師貌似天生反感,但是開發介面,不寫文件,似乎是不可能的,並且還要寫得規範,別人能看懂。介面文件寫得好,真的是件一勞永逸的事,寫乙份好文件省出的時間要遠遠大於寫文件的時間,當然要做到及時更新,與程式同步。一般介面文件包含了功能、請求方式(get/post)、 位址、引數、返回值、請求示例、返回示例以及全域性的安全驗證方式、錯誤碼等。

寫這篇文章的目的就是想把這幾個月的介面開發工作做個總結,結果拖拖拉拉寫了好幾天,寫完再讀時發現都有點變味了。文章中可能很多地方寫到的處理方法或者對知識的理解並不是很正確,希望您不吝賜教,留下寶貴建議。

APP資料介面開發的一些經驗

剛接到這樣的任務時,沒有感覺到任何壓力,不就是給移動端應用提供資料嗎?那邊發來引數,這邊處理資料,返回json。做 開發時經常使用ajax請求後台資料,不就是這麼回事嗎。於是,在確認完需求後就開始幹了,很快,進入聯調階段,這個時候各種問題來了,忙得不可開交。吃一塹,長一智,專案結束後總結了下,大致分...

介面開發 移動端APP開發中的一些介面設計理念

親密性原則主要是將相關的同類元素靠近,同時遠離不相關的元素。親密可以提高ui設計的可讀性,以及清晰地區分好介面中的各個層級。1.文字設定為左對齊 2.僅使用一種字型 3.字重 字型大小跨度要夠大 太接近的字型字重和字型大小難以讓使用者區分出不同層級的文字之間有何區別,因此為了介面形成很好的對比,不同...

使用PHP開發App介面的一些體會

做了1年半的php開發,對php寫介面的一些注意事項和心得體會也是有一些的。有空就寫下來分享一下,大部分參考別人的一些建議。文件要寫周全,需要的每個字段,規定是什麼型別,什麼含義要標柱清楚,寫完介面後自己先測試一下是否通過,不要直接扔給測試或者開發,然後反應錯誤了在進行修改 介面要做到小,同時比較多...