flask-restful使用总结


Posted in Python onDecember 04, 2018

Flask-RESTful是一个用于快速创建RESTful API接口的Flask扩展。使用Flask-RESTful可以很快速方便地创建一个RESTful风格的接口应用程序。

1、安装

pip install flask_restful

2、全部代码

from flask import Flask
from flask_restful import reqparse, abort, Api, Resource

app = Flask(__name__)
api = Api(app)

TODOS = {
  'todo1': {'task': 'build'},
  'todo2': {'task': 'bui2'},
  'todo3': {'task': 'bui3'}
}

parser = reqparse.RequestParser()
parser.add_argument('task')

class Todo(Resource):
  def get(self, todo_id):
    return TODOS[todo_id]

  def delete(self, todo_id):
    del TODOS[todo_id]
    return '', 204

  def put(self, todo_id):
    args = parser.parse_args()
    task = {'task': args['task']}
    TODOS[todo_id] = task
    return task, 201


class TodoList(Resource):
  def get(self):
    return TODOS


api.add_resource(TodoList, '/todos')
api.add_resource(Todo, '/todos/<todo_id>')

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

3、代码说明

1). 初始化

在当前程序初始化一个flask-restful的api实例:

api = Api(app)

2). 定义资源类

资源类是restful接口的具体实现,需要继承Resource类。在类中可以定义get、post等符合restful规范的接口。

class Todo(Resource):
  def get(self, todo_id):
    return TODOS[todo_id]

  def delete(self, todo_id):
    del TODOS[todo_id]
    return '', 204

  def put(self, todo_id):
    args = parser.parse_args()
    task = {'task': args['task']}
    TODOS[todo_id] = task
    return task, 201

3). 参数解析

虽然 Flask 提供了简单的方法访问请求数据, 但是对于表单数据处理还是比较麻烦. Flask-RESTful 提供了 reqparse 一种类似 argparse 参数解析机制以简化参数处理.

parser = reqparse.RequestParser(): reqparse使用RequestParser() 可以从 flask.Request.values,以及 flask.Request.json 解析值。这里创建了一个解析对象parser。

parser.add_argument('task'):向parser对象中添加你要关注的命令行参数和选项,每一个add_argument方法对应一个你要关注的参数或选项。

parser.parse_args():调用parse_args()方法进行解析,解析成功之后即可使用。

4). add_argument扩展

对于必传的参数,可以设置required=True

parser.add_argument('name', type=str, required=True,
help="Name cannot be blank!")

传多个值,使用 action='append'

parser.add_argument('name', type=str, action='append')

使用:

curl http://api.example.com -d "Name=bob" -d "Name=sue" -d "Name=joe"

获取的参数为:

args = parser.parse_args()
args['name']  # ['bob', 'sue', 'joe']

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Django与遗留的数据库整合的方法指南
Jul 24 Python
Python语言描述连续子数组的最大和
Jan 04 Python
Python无损音乐搜索引擎实现代码
Feb 02 Python
wxpython实现图书管理系统
Mar 12 Python
Python高级特性切片(Slice)操作详解
Sep 27 Python
Python Cookie 读取和保存方法
Dec 28 Python
Python发展史及网络爬虫
Jun 19 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
Sep 25 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 Python
Python多进程multiprocessing、进程池用法实例分析
Mar 24 Python
jupyter notebook 增加kernel教程
Apr 10 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Jun 04 Python
Python读取YUV文件,并显示的方法
Dec 04 #Python
对Python3+gdal 读取tiff格式数据的实例讲解
Dec 04 #Python
用python代码将tiff图片存储到jpg的方法
Dec 04 #Python
浅谈python下tiff图像的读取和保存方法
Dec 04 #Python
对python3新增的byte类型详解
Dec 04 #Python
对Python3中bytes和HexStr之间的转换详解
Dec 04 #Python
python 实现数字字符串左侧补零的方法
Dec 04 #Python
You might like
解析php中的escape函数
2013/06/29 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
php自定义urlencode,urldecode函数实例
2015/03/24 PHP
验证javascript中Object和Function的关系的三段简单代码
2010/06/27 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
JS实现的颜色实时渐变效果完整实例
2016/03/25 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
node.js学习之事件模块Events的使用示例
2017/09/28 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
Nodejs实现图片上传、压缩预览、定时删除功能
2019/10/25 NodeJs
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
2020/03/02 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
python中子类调用父类函数的方法示例
2017/08/18 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
Python用input输入列表的实例代码
2020/02/07 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
AJAX的全称是什么
2012/11/06 面试题
优秀演讲稿范文
2013/12/29 职场文书
美术专业自荐信
2014/07/07 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
2015年信访维稳工作总结
2015/04/07 职场文书
2015年招生工作总结
2015/05/04 职场文书
安全生产标语口号
2015/12/26 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
《没有任何借口》读后感:完美的执行能力
2020/01/07 职场文书
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技