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 相关文章推荐
Python3.x和Python2.x的区别介绍
Feb 12 Python
python+django快速实现文件上传
Oct 24 Python
python用装饰器自动注册Tornado路由详解
Feb 14 Python
Python批量合并有合并单元格的Excel文件详解
Apr 05 Python
Python函数参数操作详解
Aug 03 Python
Python实现简单的用户交互方法详解
Sep 25 Python
Python qqbot 实现qq机器人的示例代码
Jul 11 Python
python字符串的拼接方法总结
Nov 18 Python
python支持多线程的爬虫实例
Dec 21 Python
Python如何省略括号方法详解
Mar 21 Python
Keras 使用 Lambda层详解
Jun 10 Python
解决pytorch-gpu 安装失败的记录
May 24 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
生成缩略图
2006/10/09 PHP
php缓冲 output_buffering的使用详解
2013/06/13 PHP
php获取远程图片并下载保存到本地的方法分析
2016/10/08 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
JavaScript confirm选择判断
2008/10/18 Javascript
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
2014/10/11 Javascript
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
移动端触摸滑动插件swiper使用方法详解
2017/08/11 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
vue2.0安装style/css loader的方法
2018/03/14 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
Python实现获取网站PR及百度权重
2015/01/21 Python
Python中的filter()函数的用法
2015/04/27 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
对Python 获取类的成员变量及临时变量的方法详解
2019/01/22 Python
Python异常处理知识点总结
2019/02/18 Python
django中使用POST方法获取POST数据
2019/08/20 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
日本最大级玩偶手办购物:あみあみ Amiami
2018/04/23 全球购物
一些PHP的面试题
2015/05/06 面试题
应付会计岗位职责
2013/12/12 职场文书
项目计划书范文
2014/01/09 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
清明节主题班会
2015/08/14 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书