2016-05-25 69 views
1

我想在兩個資源之間創建一個別名。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) 

這是給下面的錯誤:Asse田:查看功能映射覆蓋現有的端點功能:api_v1_help

我可以改變這樣的代碼:

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

但我想通過將兩個API端點鏈接到同一個函數來知道是否有另一個解決方案來處理別名?

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

+0

請將此設置爲[最小完整然後可驗證](http://stackoverflow.com/help/mcve)示例。 (最低代碼來重現您的問題。) – wgwz

+0

@wgwz是否這樣? – t2bxl

回答

0

使用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設置爲the name of the view class,這樣你就可以在add_resource通話後使用'api_v1_help'作爲名稱。