Created
June 6, 2017 20:04
-
-
Save danielkraic/884ed2e0c2013b43c14a507ea0b5a2fc to your computer and use it in GitHub Desktop.
flask deprecated_route
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# deprecated_route.py | |
registered_deprecated_routes = set() | |
register_deprecated_routes = True | |
def is_deprecated(route): | |
return route in registered_deprecated_routes | |
def register(app, rule, **options): | |
def decorator(f): | |
if register_deprecated_routes: | |
registered_deprecated_routes.add(rule) | |
endpoint = options.pop('endpoint', None) | |
app.add_url_rule(rule, endpoint, f, **options) | |
return f | |
return decorator | |
# app.py | |
from flask import Flask, jsonify, Blueprint | |
import deprecated_route | |
api = Blueprint('api', __name__) | |
deprecated_route.register_deprecated_routes = True | |
@deprecated_route.register(api, '/f1') | |
@api.route('/v1/f1') | |
def f1(): | |
return jsonify(f='f1') | |
@deprecated_route.register(api, '/f2/<a1>/<a2>', methods=['POST']) | |
@api.route('/v1/f2/<a1>/<a2>', methods=['POST']) | |
def f2(a1, a2): | |
return jsonify(f='f2', a1=a1, a2=a2) | |
@api.route('/f3/<a1>', methods=['GET', 'POST']) | |
@api.route('/v1/f3/<a1>', methods=['GET', 'POST']) | |
def f3(a1): | |
return jsonify(f='f3', a1=a1) | |
if __name__ == '__main__': | |
app = Flask(__name__) | |
app.register_blueprint(api) | |
routes = [rule.rule for rule in app.url_map.iter_rules()] | |
for r in sorted(routes): | |
print('{}: {}'.format(deprecated_route.is_deprecated(r), r)) | |
app.run() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment