Flask-RESTful 别名

3
我希望创建两个资源之间的别名。
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') 

但我想知道是否有另一种使用flask-restful处理别名的解决方案,将两个API端点与同一个函数链接起来?

我想要对特定API版本的调用进行分组。


请将此示例编写为最小化且可验证的形式,以便能够重现您的问题。(即最少量的代码) - wgwz
1个回答

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 被设置为 视图类的名称,因此您可以在 add_resource 调用之后使用 'api_v1_help' 作为名称。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接