摘要:接口分類增刪改查接口業(yè)務接口增刪改查接口主要負責對數(shù)據(jù)庫數(shù)據(jù)進行增刪改查,用戶管理,商品管理,訂單管理等,主要為后臺管理系統(tǒng)接口和配置接口,嚴格按照規(guī)范編寫狀態(tài)碼按照標準規(guī)范。只要正確收到和返回請求,狀態(tài)碼就為,包括服務器內(nèi)部錯誤。
接口分類
增刪改查接口
業(yè)務接口
增刪改查接口主要負責對數(shù)據(jù)庫數(shù)據(jù)進行增刪改查,用戶管理,商品管理,訂單管理等,主要為后臺管理系統(tǒng)接口和配置接口,嚴格按照RESTful規(guī)范編寫, 狀態(tài)碼按照標準規(guī)范。
入口 /api/resouces/{orders, users等}
日志內(nèi)容: 時間,ip, 請求方式,請求路徑,用戶信息,操作類型,操作結果,ua
業(yè)務接口業(yè)務主流程接口抽象,登錄,注冊,修改密碼,下單,付款,確認收貨等,主要是終端用戶的操作主流程的接口,規(guī)范按照自定義更佳, 返回錯誤需要明確每個錯誤的業(yè)務錯誤碼。只要正確收到和返回請求,HTTP狀態(tài)碼就為200 OK,包括服務器內(nèi)部錯誤。未知錯誤使用code=-1。盡量不要將任何不可控的錯誤以及調(diào)用棧暴露,而應當在捕獲到異常后,將調(diào)用棧打印到日志中。
入口POST /api/action
參數(shù){ "action": "login", "data": { "phone":"111", "password": "123456" } }日志內(nèi)容
時間,ip,請求方式,請求路徑,用戶標識,錯誤碼,錯誤內(nèi)容, action,data,設備ua等信息
返回{ "code": 10000, "msg": "用戶未注冊", "data": null }實現(xiàn)
框架:
import traceback class ErrorCode: sys_unknown = "未知錯誤", -1 sys_action_not_exist = "操作不存在", 10000 sys_params_wrong = "參數(shù)錯誤", 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 = "參數(shù)錯誤", 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。
文件獲取:根據(jù)文件id從對象存儲服務器獲取臨時下載地址。
用戶認證token附在header中,保證日志的干凈
編碼表所有下拉框類型,枚舉類型,都統(tǒng)一存儲至統(tǒng)一的編碼表中。
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42433.html
摘要:極致的插件機制,系統(tǒng)內(nèi)的系統(tǒng),安裝和卸載不會對原來的系統(tǒng)產(chǎn)生影響強大的功能完全滿足各階段的需求,支持用戶多端訪問后臺微信前臺等,系統(tǒng)中的系統(tǒng)。多入口模式,多入口分為后臺前端,微信,對內(nèi)接口,對外接口,不同的業(yè)務,不同的設備,進入不同的入口。 RageFrame 2.0 為二次開發(fā)而生,讓開發(fā)變得更簡單 項目地址:https://github.com/jianyan74/... 前言 這...
摘要:極致的插件機制,系統(tǒng)內(nèi)的系統(tǒng),安裝和卸載不會對原來的系統(tǒng)產(chǎn)生影響強大的功能完全滿足各階段的需求,支持用戶多端訪問后臺微信前臺等,系統(tǒng)中的系統(tǒng)。多入口模式,多入口分為后臺前端,微信,對內(nèi)接口,對外接口,不同的業(yè)務,不同的設備,進入不同的入口。 RageFrame 2.0 為二次開發(fā)而生,讓開發(fā)變得更簡單 項目地址:https://github.com/jianyan74/... 前言 這...
摘要:其標準為前身是,提供強大的在線編輯功能,包括語法高亮錯誤提示自動完成實時預覽,并且支持用戶以格式撰寫導入導出轉(zhuǎn)換文檔。 團隊內(nèi)部RestAPI開發(fā)采用設計驅(qū)動開發(fā)的模式,即使用API設計文檔解耦前端和后端的開發(fā)過程,雙方只在聯(lián)調(diào)與測試時耦合。在實際開發(fā)和與前端合作的過程中,受限于眾多因素的影響,開發(fā)效率還有進一步提高的空間。本文的目的是優(yōu)化工具鏈支持,減少一部分重復和枯燥的勞動。 現(xiàn)狀...
摘要:開發(fā)者體驗可以幫助團隊更快地實現(xiàn)功能上線,因為它對開發(fā)者的體驗非常好??梢燥@示每個的埋點指標,可以幫忙你定位錯誤,可以分析中請求的每個字段的分布頻率。產(chǎn)品案例雖然規(guī)范是由在年公布的,但是自年以來,就是移動應用開發(fā)的重要組成部分。 在大前端應用的開發(fā)過程中,如何管理好數(shù)據(jù)是一件很有挑戰(zhàn)的事情。后端工程師需要聚合來自多個數(shù)據(jù)源的數(shù)據(jù),再分發(fā)到大前端的各個端中,而大前端工程師需要在實現(xiàn)用戶體...
閱讀 2054·2021-09-22 16:05
閱讀 9410·2021-09-22 15:03
閱讀 2910·2019-08-30 15:53
閱讀 1727·2019-08-29 11:15
閱讀 938·2019-08-26 13:52
閱讀 2379·2019-08-26 11:32
閱讀 1833·2019-08-26 10:38
閱讀 2598·2019-08-23 17:19