路由系统

典型写法
@app.route('/detail/<int:id>', methods=['GET'], endpoint='detail')
默认转换器

DEFAULT_CONVERTERS = {
'default': UnicodeConverter,
'string': UnicodeConverter,
'any': AnyConverter,
'path': PathConverter,
'int': IntegerConverter,
'float': FloatConverter,
'uuid': UUIDConverter,
}

路由系统的本质
decorator = @app.route('/', methods=["GET", "POST"], endpoint='s1')
def route(self, rule, **options):
    def decorator(f):
        endpoint = options.pop("endpoint", None)
        self.add_url_rule(rule, endpoint, f, **options)
        return f

    return decorator
@decorator
    decorator(index)
    
# 同理
def login():
    return "登录"
app.add_url_rule('/index', endpoint='s1', login, methods=["GET", "POST"])
# 与django路由类似
# Django与flask路由基于装饰器,本质是基于add_url_rule
# endpoint随便取,但是不能重复,一旦重复就报错,如果不传加装饰器会有问题
# add_url_rule 源码中endpoint如果是为空,endpoint = _endpoint_from_view_func(view_func),最终取return view_func.__name__
from flask import Flask, jsonify

app = Flask(__name__)


@app.route('/', endpoint='index', methods=['GET'])
def index():
    return jsonify(
        {
            "name": "xxx",
            'age': 21
        }
    )


# app.add_url_rule('/', view_func=index, endpoint='index')

if __name__ == '__main__':
    app.run()

原文地址:https://www.cnblogs.com/ShenJunHui6/p/11219476.html