2016-05-25 4 views
1

2つのリソース間にエイリアスを作成したいと思います。Flask-RESTfulエイリアス

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') 

を私は希望2つのAPIエンドポイントを同じ関数にリンクすることでエイリアスを扱うことができます。

特定のAPIバージョンの呼び出しをグループ化するために検索します。代わりに

+0

これを[最小限完成して検証可能](http://stackoverflow.com/help/mcve)の例にしてください。 (問題を再現するための最小限のコード) – wgwz

+0

@wgwz like this? – t2bxl

答えて

0

使用Flask.add_url_route:あなたはadd_resourceコールの後に名前として'api_v1_help'を使用できるようにデフォルトで

# 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として設定されています。