簡體   English   中英

Flask-RESTful別名

[英]Flask-RESTful alias

我想在兩個資源之間創建一個別名。

from flask import Flask
from flask_restful import Api, Resource

class api_v1_help(Resource):
    def get(self):
        html_file = "API V1"
        return (html_file, 200, {'Content-Type': 'text/html; charset=utf-8'})

class api_v2_help(Resource):
    def get(self):
        html_file = "API V2"
        return (html_file, 200, {'Content-Type': 'text/html; charset=utf-8'})


app = Flask(__name__)
api = Api(app)

# API (current)
api.add_resource(api_v1_help, '/api/help')

# API v1
api.add_resource(api_v1_help, '/api/v1/help')

# API v2
api.add_resource(api_v2_help, '/api/v2/help')

if __name__ == '__main__':
    # Start app
    app.run(debug=True,port=5000)

這將產生以下錯誤:AssertionError:視圖函數映射正在覆蓋現有的終結點函數:api_v1_help

我可以這樣更改代碼:

api.add_resource(api_v1_help, '/api/help', '/api/v1/help') 

但我想知道是否存在通過將兩個API端點鏈接到同一函數來解決燒瓶問題的另一種解決方案?

我搜索將特定API版本的調用分組。

改用Flask.add_url_route

# API v1
api.add_resource(api_v1_help, '/api/v1/help')

# API v2
api.add_resource(api_v2_help, '/api/v2/help')

# API (current)
app.add_url_rule('/api/help', endpoint='api_v1_help')

默認情況下,將endpoint設置為視圖類的名稱 ,因此可以在add_resource調用之后使用'api_v1_help'作為名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM