摘要:接口分類增刪改查接口業務接口增刪改查接口主要負責對數據庫數據進行增刪改查,用戶管理,商品管理,訂單管理等,主要為后臺管理系統接口和配置接口,嚴格按照規范編寫狀態碼按照標準規范。只要正確收到和返回請求,狀態碼就為,包括服務器內部錯誤。
接口分類
增刪改查接口
業務接口
增刪改查接口主要負責對數據庫數據進行增刪改查,用戶管理,商品管理,訂單管理等,主要為后臺管理系統接口和配置接口,嚴格按照RESTful規范編寫, 狀態碼按照標準規范。
入口 /api/resouces/{orders, users等}
日志內容: 時間,ip, 請求方式,請求路徑,用戶信息,操作類型,操作結果,ua
業務接口業務主流程接口抽象,登錄,注冊,修改密碼,下單,付款,確認收貨等,主要是終端用戶的操作主流程的接口,規范按照自定義更佳, 返回錯誤需要明確每個錯誤的業務錯誤碼。只要正確收到和返回請求,HTTP狀態碼就為200 OK,包括服務器內部錯誤。未知錯誤使用code=-1。盡量不要將任何不可控的錯誤以及調用棧暴露,而應當在捕獲到異常后,將調用棧打印到日志中。
入口POST /api/action
參數{ "action": "login", "data": { "phone":"111", "password": "123456" } }日志內容
時間,ip,請求方式,請求路徑,用戶標識,錯誤碼,錯誤內容, action,data,設備ua等信息
返回{ "code": 10000, "msg": "用戶未注冊", "data": null }實現
框架:
import traceback class ErrorCode: sys_unknown = "未知錯誤", -1 sys_action_not_exist = "操作不存在", 10000 sys_params_wrong = "參數錯誤", 10001 already_register = "用戶已注冊", 10002 verify_code_wrong = "驗證碼錯誤", 10003 action_not_exist = "操作不存在", 10004 class Action: schema = {} def __init__(self, data): assert data, ErrorCode.sys_params_wrong self.data = data def run(self, data): raise NotImplementedError() class App: action_map = {} def dispatch(self, data): try: assert data["action"] in self.action_map, ErrorCode.sys_action_not_exist action = self.action_map[data["action"]] return { "code": 0, "msg": "", "data": action.run(data["params"]) } except AssertionError as e: msg, code = e return { "code": code, "msg": msg, "data": None } except Exception: traceback.print_exc() msg, code = ErrorCode.sys_unknown return { "code": code, "msg": msg, "data": None }
注冊:
from schema import And, Schema from acts import Action, App, ErrorCode class MyErrorCode(ErrorCode): params_wrong = "參數錯誤", 10000 already_register = "用戶已注冊", 10001 verify_code_wrong = "驗證碼錯誤", 10002 action_not_exist = "操作不存在", 10003 unknown = "未知錯誤", -1 class RegisterAction(Action): schema = Schema({ "verify_code": And(str, len), "phone": And(str, len), "password": And(str, len) }) auth = False def run(self, data): assert check_verify_code(data["verify_code"]), MyErrorCode.verify_code_wrong assert User.get(data["phone"]), MyErrorCode.already_register return {"token": "token"} action_map = { "register": RegisterAction } class MyApp(App): action_map = action_map app = MyApp()部署
nginx
gunicorn app:app -k "egg:meinheld#gunicorn_worker" -w 9
目錄結構app.py,入口
actions/ action目錄
resources/ resouce目錄
.gitignore
文件上傳特殊接口,form-data格式,用戶直接上傳到對象存儲服務器,使用對象存儲服務器生成一次性上傳token,返回文件id。
文件獲取:根據文件id從對象存儲服務器獲取臨時下載地址。
用戶認證token附在header中,保證日志的干凈
編碼表所有下拉框類型,枚舉類型,都統一存儲至統一的編碼表中。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42433.html
摘要:極致的插件機制,系統內的系統,安裝和卸載不會對原來的系統產生影響強大的功能完全滿足各階段的需求,支持用戶多端訪問后臺微信前臺等,系統中的系統。多入口模式,多入口分為后臺前端,微信,對內接口,對外接口,不同的業務,不同的設備,進入不同的入口。 RageFrame 2.0 為二次開發而生,讓開發變得更簡單 項目地址:https://github.com/jianyan74/... 前言 這...
摘要:極致的插件機制,系統內的系統,安裝和卸載不會對原來的系統產生影響強大的功能完全滿足各階段的需求,支持用戶多端訪問后臺微信前臺等,系統中的系統。多入口模式,多入口分為后臺前端,微信,對內接口,對外接口,不同的業務,不同的設備,進入不同的入口。 RageFrame 2.0 為二次開發而生,讓開發變得更簡單 項目地址:https://github.com/jianyan74/... 前言 這...
摘要:其標準為前身是,提供強大的在線編輯功能,包括語法高亮錯誤提示自動完成實時預覽,并且支持用戶以格式撰寫導入導出轉換文檔。 團隊內部RestAPI開發采用設計驅動開發的模式,即使用API設計文檔解耦前端和后端的開發過程,雙方只在聯調與測試時耦合。在實際開發和與前端合作的過程中,受限于眾多因素的影響,開發效率還有進一步提高的空間。本文的目的是優化工具鏈支持,減少一部分重復和枯燥的勞動。 現狀...
摘要:開發者體驗可以幫助團隊更快地實現功能上線,因為它對開發者的體驗非常好。可以顯示每個的埋點指標,可以幫忙你定位錯誤,可以分析中請求的每個字段的分布頻率。產品案例雖然規范是由在年公布的,但是自年以來,就是移動應用開發的重要組成部分。 在大前端應用的開發過程中,如何管理好數據是一件很有挑戰的事情。后端工程師需要聚合來自多個數據源的數據,再分發到大前端的各個端中,而大前端工程師需要在實現用戶體...
閱讀 1990·2021-09-22 16:05
閱讀 9255·2021-09-22 15:03
閱讀 2880·2019-08-30 15:53
閱讀 1698·2019-08-29 11:15
閱讀 903·2019-08-26 13:52
閱讀 2348·2019-08-26 11:32
閱讀 1798·2019-08-26 10:38
閱讀 2562·2019-08-23 17:19