Flask 学习-43.Flask-RESTX 路由注册的2种方式
2023-06-13 09:12:13 时间
前言
flask 注册路由有2种方式,一种是通过@app.route()
装饰器来实现,另外一种是通过app.add_url_rule()
方法来实现路由注册
路由的注册
在没有使用 Flask-RESTX 框架之前,我们学的第一个hello world 程序是通过@app.route()
装饰器来注册的路由
from flask import Flask
app = Flask(__name__)
@app.route("/hello")
def hello_world():
return {'hello': 'world'}
也可以通过 add_url_rule()
方法 来完成路由注册 @app.route('/hello')
的本质就是调用 add_url_rule()
方法。
from flask import Flask
app = Flask(__name__)
def hello():
# 另一种 基于类的视图(也叫即插视图)
return {'hello': 'world'}
app.add_url_rule('/hello', view_func=hello)
可插拔视图,基于类的视图
from flask.views import View, MethodView
from flask import Flask
app = Flask(__name__)
class MyView(MethodView):
def get(self):
return {"code": 0, "msg": "get 请求"}
def post(self):
return {"code": 0, "msg": "post 请求"}
# 注册,用as_view方法
app.add_url_rule("/my", view_func=MyView.as_view("myview"))
采用基于类的视图,只能通过 add_url_rule() 来注册路由。
Flask-RESTX 中路由注册
Flask-RESTX 提供的主要构建块是资源。资源建立在Flask 可插拔视图之上,我们写的都是基于类的视图,支持2种注册方式
@api.route('/hello')
装饰器注册,注意这里是api 不是app了api.add_resource(HelloWorld, '/hello')
通过add_resource 方法注册
@api.route('/hello')
装饰器使用示例
from flask.views import View, MethodView
from flask import Flask
app = Flask(__name__)
api = Api(app)
@api.route('/hello1')
class HelloWorld(Resource):
def get(self):
return {'hello': 'world1'}
if __name__ == '__main__':
app.run(debug=True)
另一种 add_resource()
方法注册
from flask.views import View, MethodView
from flask import Flask
app = Flask(__name__)
api = Api(app)
class HelloWorld(Resource):
def get(self):
return {'hello': 'world2'}
api.add_resource(HelloWorld, '/hello2')
Endpoints
在一个 API 中,同一个资源会有多个 URL
api.add_resource(HelloWorld, '/hello', '/world')
或者
@api.route('/hello', '/world')
class HelloWorld(Resource):
pass
那么我们访问http://127.0.0.1:5000/hello
和 访问 http://127.0.0.1:5000/world
2个地址得到的结果是一样的
设置 endpoint 参数
api.add_resource(Todo, '/todo/<int:todo_id>', endpoint='todo_ep')
# or
@api.route('/todo/<int:todo_id>', endpoint='todo_ep')
class HelloWorld(Resource):
pass
url_for() 函数和 endpoint 使用参考前面教程https://www.cnblogs.com/yoyoketang/p/16631105.html
2022年第 12期《python接口web自动化+测试开发》课程,9月17号开学!
本期上课时间:2022年9月17号 - 2022年12月17号,周六周日上午9:00-11:00
报名费:报名费3000一人(周期3个月)
联系微信/QQ:283340479
相关文章
- Linux如何添加路由_linux添加永久路由命令
- OpenWRT 之数据包原路发回(多出口策略路由)
- HDLC与PPP协议原理与配置_路由交换基础内容
- vue2路由
- 华为核心路由及交换机console密码
- Django Rest Framework源码剖析(八)—–视图与路由详解编程语言
- Linux主机如何搭建路由器(linux主机加路由)
- 为Linux系统定位路由使用Linux路由软件(linux路由软件)
- 器Linux默认路由器:体验智能化的路由体验(linux默认路由)
- Go语言router请求路由
- Linux下深入理解路由查看(路由查看linux)
- Linux内核下强大的路由功能(linux内核路由)
- 技术Linux系统路由实现技术探析(linux路由实现的)