首页 > 其他分享 >Flask 学习-43.Flask-RESTX 路由注册的2种方式

Flask 学习-43.Flask-RESTX 路由注册的2种方式

时间:2022-09-04 17:12:41浏览次数:87  
标签:__ RESTX Flask app 43 add api hello

前言

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/world2个地址得到的结果是一样的

设置 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

标签:__,RESTX,Flask,app,43,add,api,hello
From: https://www.cnblogs.com/yoyoketang/p/16655248.html

相关文章

  • uwsgi+Flask部署
    1.安装uwsgipip3installuwsgi2.Flask项目目录 flask_demo:项目目录。uwsgi:用来存放和uwsgi相关的配置文件和日志文件。venv:虚拟环境目录......
  • Flask 学习-41.Flask-RESTPlus 入门到放弃
    前言Flask-restfull是flask框架开发接口的一个框架,Flask-RESTPlus是Flask-restfull升级版,功能做了一些优化,主要是可以生成swagger在线文档了。环境准备先安装Flask......
  • node43-服务器基础概念
         ......
  • P4363 [九省联考 2018] 一双木棋 题解
    一道状压dp题,我写的记忆化搜索。注意到这道题已经下子的区域和未下子的区域有一条轮廓线分割,因此考虑右上到左下记纵向为1,横向为0,状压一下,然后顺着记忆化搜索(有点类似......
  • Flask 学习-40.Flask-RESTful 结合蓝图使用
    前言Flask-RESTful结合蓝图使用设计接口RESTful接口没使用蓝图之前注册接口fromappsimportcreate_app,db,jwtfromflaskimporturl_for,request,jsonifyf......
  • 43. SQL--视图:create view
    1.前言视图(view)是一个由select查询所定义出来的虚拟表。我们知道,select查询会产生一个包含行和列的结果集,它在结构上和真实的物理表是类似的,您可以把这个结果集看做......
  • Flask 学习-38.Flask-RESTful 序列化输出中文显示问题
    前言flask接口无法显示中文,可以添加全局配置JSON_AS_ASCII=False,但是解决不了Flask-RESTful序列化输出中文问题flask配置中文显示添加全局配置项JSON_AS_ASCII=Fa......
  • flask-闪现
    使用介绍#闪现的概念:在一个视图函中将数据存放在session中,在另一个视图函数中取出该数据#视图被访问一次就将数据在session中存放一遍,数据从session中取出一次就少一......
  • 2022-09-01 网站强制ctrl+f5刷新报错,只按f5刷新不报错,报错内容为443,但真实报错代码为4
    报错内容:NotFoundTherequestedURL/mallwasnotfoundonthisserver.ApacheServeratxxx.yyy.comPort443描述:如题。解决方案:在网站根目录添加一个文件.htacce......
  • 构建计算机视觉 WebApp — Flask、OpenCV 和 MongoDB
    构建计算机视觉WebApp—Flask、OpenCV和MongoDB作为一名数据科学家,具备一些软件工程技能已成为就业市场中一项非常重要的技能。如果您可以构建模型,我建议您提高简单......