没有覆盖处理程序的路由层次结构
Hierarchy of routes without overwriting handlers
我正在编写一个烧瓶应用程序。
有多个端点是有意义的,比如:
prefix + '/'
prefix + '/<id>'
prefix + '/<id>/parameters'
prefix + '/<id>/parameters/<param>'
但是,如果我尝试在蓝图中声明它们,我会得到 AssertionError: Handler is overwriting existing for endpoint _blueprintname_._firsthandlername_
有什么办法解决这个问题吗?我知道以前在 .net core 等技术中已经直接完成了。提前致谢。
如果你打算在你的路由中添加很多参数,你可以看看 this flask 模块。
它可以帮助您将路由分配给资源。
您可以建立一组路线如下:
from flask import Flask, request
from flask_restful import Resource, Api, reqparse
app = Flask(__name__)
api = Api(app)
class Some(Resource):
def get(self, id=None, params=None):
"""
In order to allow empty params for routes, the named arguments
must be initialized
"""
if id and params:
return {'message':'this is get with id and params'}
if id:
return {'message':'this is get with id'}
return {'message':'this is get'}
def post():
"""
One can use here reqparse module to validate post params
"""
return {'message':'this is post'}
# Add the resource to the service
api.add_resource(Some, '/', '/<string:id>','/<string:id>/<string:params>', ...)
# start the service
if __name__ == '__main__':
app.run(debug=True)
我正在编写一个烧瓶应用程序。 有多个端点是有意义的,比如:
prefix + '/'
prefix + '/<id>'
prefix + '/<id>/parameters'
prefix + '/<id>/parameters/<param>'
但是,如果我尝试在蓝图中声明它们,我会得到 AssertionError: Handler is overwriting existing for endpoint _blueprintname_._firsthandlername_
有什么办法解决这个问题吗?我知道以前在 .net core 等技术中已经直接完成了。提前致谢。
如果你打算在你的路由中添加很多参数,你可以看看 this flask 模块。 它可以帮助您将路由分配给资源。
您可以建立一组路线如下:
from flask import Flask, request
from flask_restful import Resource, Api, reqparse
app = Flask(__name__)
api = Api(app)
class Some(Resource):
def get(self, id=None, params=None):
"""
In order to allow empty params for routes, the named arguments
must be initialized
"""
if id and params:
return {'message':'this is get with id and params'}
if id:
return {'message':'this is get with id'}
return {'message':'this is get'}
def post():
"""
One can use here reqparse module to validate post params
"""
return {'message':'this is post'}
# Add the resource to the service
api.add_resource(Some, '/', '/<string:id>','/<string:id>/<string:params>', ...)
# start the service
if __name__ == '__main__':
app.run(debug=True)