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 快速入门的主要内容,如果未能解决你的问题,请参考以下文章

Flask学习-前言

Flask 学习-1.简介与环境准备

☆Django☆---初步学习

比Django和Flask,Tornado还要快的Web框架

Flask WTForm BooleanField用法

酒友快来!Hip Flask!硬汉户外不锈钢便携酒壶6盎司酒具