Flask 学习-42.Flask-RESTX 快速入门
Posted 上海-悠悠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask 学习-42.Flask-RESTX 快速入门相关的知识,希望对你有一定的参考价值。
前言
Flask-restfull 是flask 框架开发接口的一个框架,Flask-RESTPlus 是Flask-restfull 升级版,可以生成swagger 在线文档了。
但是 Flask-RESTPlus 这个项目不再维护了,迁移到 Flask-RESTX 了。Flask-RESTX 与 Flask-RESTPlus 的 API 保持 100% 兼容。
环境安装
Flask-RESTX 目前最新版本0.5.1 (但是不支持最新的flask 2.2.2版本)
以下是可以用的匹配版本
Flask==2.0.1
flask-restx==0.5.1
Werkzeug==2.0.1
Flask-RESTX 官方地址https://flask-restx.readthedocs.io/en/latest/quickstart.html
初始化
与其他所有扩展一样,您可以使用应用程序对象对其进行初始化:
from flask import Flask
from flask_restx import Api
app = Flask(__name__)
api = Api(app)
或者使用工厂模式:
from flask import Flask
from flask_restx import Api
api = Api()
app = Flask(__name__)
api.init_app(app)
一个简单的hello world
一个最小的 Flask-RESTX API 如下所示:
from flask import Flask
from flask_restx import Resource, Api
app = Flask(__name__)
api = Api(app)
@api.route('/hello')
class HelloWorld(Resource):
def get(self):
return 'hello': 'world'
if __name__ == '__main__':
app.run(debug=True)
启动服务后访问http://127.0.0.1:5000/hello
资源丰富的路由
Flask-RESTX 提供的主要构建块是资源。资源建立在Flask 可插拔视图之上,让您只需在资源上定义方法即可轻松访问多种 HTTP 方法。
应用程序的基本 CRUD 资源如下所示:
from flask import Flask, request
from flask_restx import Resource, Api
app = Flask(__name__)
api = Api(app)
todos =
@api.route('/<string:todo_id>')
class TodoSimple(Resource):
def get(self, todo_id):
return todo_id: todos[todo_id]
def put(self, todo_id):
todos[todo_id] = request.form['data']
return todo_id: todos[todo_id]
if __name__ == '__main__':
app.run(debug=True)
可以使用curl 测试上面接口,当然也可以用其它工具
$ curl http://localhost:5000/todo1 -d "data=Remember the milk" -X PUT
"todo1": "Remember the milk"
$ curl http://localhost:5000/todo1
"todo1": "Remember the milk"
$ curl http://localhost:5000/todo2 -d "data=Change my brakepads" -X PUT
"todo2": "Change my brakepads"
$ curl http://localhost:5000/todo2
"todo2": "Change my brakepads"
Flask-RESTX 可以理解来自视图方法的多种返回值。与 Flask 类似,您可以返回任何可迭代对象并将其转换为响应,包括原始 Flask 响应对象。
Flask-RESTX 还支持使用多个返回值设置响应代码和响应头,如下所示:
class Todo1(Resource):
def get(self):
# Default to 200 OK
return 'task': 'Hello world'
class Todo2(Resource):
def get(self):
# Set the response code to 201
return 'task': 'Hello world', 201
class Todo3(Resource):
def get(self):
# Set the response code to 201 and return custom headers
return 'task': 'Hello world', 201, 'Etag': 'some-opaque-string'
以上是关于Flask 学习-42.Flask-RESTX 快速入门的主要内容,如果未能解决你的问题,请参考以下文章