国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

現代化高效率API接口開發

Keven / 3044人閱讀

摘要:接口分類增刪改查接口業務接口增刪改查接口主要負責對數據庫數據進行增刪改查,用戶管理,商品管理,訂單管理等,主要為后臺管理系統接口和配置接口,嚴格按照規范編寫狀態碼按照標準規范。只要正確收到和返回請求,狀態碼就為,包括服務器內部錯誤。

接口分類

增刪改查接口

業務接口

增刪改查接口

主要負責對數據庫數據進行增刪改查,用戶管理,商品管理,訂單管理等,主要為后臺管理系統接口和配置接口,嚴格按照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 一個 Yii2 + AdminLET 免費開源多商戶通用后臺管理系統

    摘要:極致的插件機制,系統內的系統,安裝和卸載不會對原來的系統產生影響強大的功能完全滿足各階段的需求,支持用戶多端訪問后臺微信前臺等,系統中的系統。多入口模式,多入口分為后臺前端,微信,對內接口,對外接口,不同的業務,不同的設備,進入不同的入口。 RageFrame 2.0 為二次開發而生,讓開發變得更簡單 項目地址:https://github.com/jianyan74/... 前言 這...

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

    摘要:極致的插件機制,系統內的系統,安裝和卸載不會對原來的系統產生影響強大的功能完全滿足各階段的需求,支持用戶多端訪問后臺微信前臺等,系統中的系統。多入口模式,多入口分為后臺前端,微信,對內接口,對外接口,不同的業務,不同的設備,進入不同的入口。 RageFrame 2.0 為二次開發而生,讓開發變得更簡單 項目地址:https://github.com/jianyan74/... 前言 這...

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

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

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

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

    LucasTwilight 評論0 收藏0

發表評論

0條評論

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