eignhpants
eignhpants

Reputation: 1771

Modular routes in python flask

I am trying to have one service which will fulfill two related functions. I would like to have something like this for my REST api:

/route1/get/as_text

/route2/get/as_json

In nodejs, you can pass off a collection of routes from some base URL by saying:

app.use('/route1/', route1.js)
app.use('/route2/', route2.js)

and then the route1.js will have routes defined like this:

app.router('/as_text', function(){//some stuff})

When I do this, can define a set of routes, that all have /route1/ as the basis of the URL. I would like to do something similar in flask, where I just define the first section of the url, and add all logic of that section of the API into a file which is separate to another section of the api.

Is this possible in flask? Or should I look for a new approach?

Upvotes: 2

Views: 3603

Answers (1)

Brad K.
Brad K.

Reputation: 198

You'll want to take a look at Blueprints.

When defining your application, you can register Blueprints with a path prefix:

app = Flask(__name__, template_folder='views')
app.register_blueprint(controllers.route1, url_prefix="/route1")
app.register_blueprint(controllers.route2, url_prefix="/route2")

Then define the controllers for these routes in separate files.

route1 = Blueprint('route1', __name__, template_folder='views')

@route1.route('/get/as_text',methods=['GET'])
def get_as_text_route():

    return json.jsonify(data="my data")

You could also checkout Flask Restful for creating REST APIs in with Flask.

Upvotes: 3

Related Questions