成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

現(xiàn)代化高效率API接口開發(fā)

Keven / 3069人閱讀

摘要:接口分類增刪改查接口業(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

相關文章

  • RageFrame 一個 Yii2 + AdminLET 免費開源多商戶通用后臺管理系統(tǒng)

    摘要:極致的插件機制,系統(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/... 前言 這...

    sunny5541 評論0 收藏0
  • RageFrame 一個 Yii2 + AdminLET 免費開源多商戶通用后臺管理系統(tǒng)

    摘要:極致的插件機制,系統(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/... 前言 這...

    Ali_ 評論0 收藏0
  • 效率專精系列】善用API統(tǒng)一描述語言提升RestAPI開發(fā)效率

    摘要:其標準為前身是,提供強大的在線編輯功能,包括語法高亮錯誤提示自動完成實時預覽,并且支持用戶以格式撰寫導入導出轉(zhuǎn)換文檔。 團隊內(nèi)部RestAPI開發(fā)采用設計驅(qū)動開發(fā)的模式,即使用API設計文檔解耦前端和后端的開發(fā)過程,雙方只在聯(lián)調(diào)與測試時耦合。在實際開發(fā)和與前端合作的過程中,受限于眾多因素的影響,開發(fā)效率還有進一步提高的空間。本文的目的是優(yōu)化工具鏈支持,減少一部分重復和枯燥的勞動。 現(xiàn)狀...

    tianyu 評論0 收藏0
  • GraphQL 和 Apollo 為什么能幫助你更快地完成開發(fā)需求?

    摘要:開發(fā)者體驗可以幫助團隊更快地實現(xiàn)功能上線,因為它對開發(fā)者的體驗非常好??梢燥@示每個的埋點指標,可以幫忙你定位錯誤,可以分析中請求的每個字段的分布頻率。產(chǎn)品案例雖然規(guī)范是由在年公布的,但是自年以來,就是移動應用開發(fā)的重要組成部分。 在大前端應用的開發(fā)過程中,如何管理好數(shù)據(jù)是一件很有挑戰(zhàn)的事情。后端工程師需要聚合來自多個數(shù)據(jù)源的數(shù)據(jù),再分發(fā)到大前端的各個端中,而大前端工程師需要在實現(xiàn)用戶體...

    LucasTwilight 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<