Flask Restful add resource parameters Flask Restful add resource parameters python python

Flask Restful add resource parameters


Since version 0.3.3 (released May 22, 2015), add_resource() is able to pass parameters to your Resource constructor.

Following the original example, here is the views.py:

from flask.ext.restful import Resourceclass ApiPage(Resource):    def __init__(self, bar):        self.bar = bar    def get(self):        serialized = str(my_bar)        return serialized

And the relevant code for main.py:

# ...my_bar = Bar()api.add_resource(views.ApiPage, '/api/my/end/point/',                 resource_class_kwargs={'bar': my_bar})


In version 0.3.5 documentation you can do it this way

# in main.py...my_bar = Bar()api.add_resource(views.ApiPage, '/api/my/end/point/',             resource_class_kwargs={'my_bar': my_bar})

pass your object in the add_resource method and use it in the resource init method

and in your class init

class ApiPage(Resource):    def __init__(self, **kwargs):       self.my_bar= kwargs['my_bar']


After struggling with the same problem I found you can use add_url_rule coupled with as_view

So in your case I guess the code would be something like

class ApiPage(Resource):    def __init__(self, bar=None)        self.__my_bar=bar    def get(self):        serialized = str(self.__my_bar)        return serializedmy_bar = Bar()app = Flask(__name__)app.add_url_rule('/api/my/end/point/', bar=my_bar)api = Api(app)