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 相关文章推荐
Python日期操作学习笔记
Oct 07 Python
Python中处理字符串之endswith()方法的使用简介
May 18 Python
python查看zip包中文件及大小的方法
Jul 09 Python
python实现类之间的方法互相调用
Apr 29 Python
python3正则提取字符串里的中文实例
Jan 31 Python
pyqt5中QThread在使用时出现重复emit的实例
Jun 21 Python
Django对数据库进行添加与更新的例子
Jul 12 Python
python验证码图片处理(二值化)
Nov 01 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
Feb 15 Python
浅谈python处理json和redis hash的坑
Jul 16 Python
Python3如何实现Win10桌面自动切换
Aug 11 Python
Python 把两层列表展开平铺成一层(5种实现方式)
Apr 07 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实现的CSS更新类实例
2014/09/22 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
Yii2.0建立公共方法简单示例
2019/01/29 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
异步加载script的代码
2011/01/12 Javascript
JS获取整个页面文档的实现代码
2011/12/15 Javascript
javascript原生ajax写法分享
2016/04/10 Javascript
JS弹出新窗口被拦截的解决方法
2016/08/09 Javascript
AngularGauge 属性解析详解
2016/09/06 Javascript
canvas学习之API整理笔记(一)
2016/12/29 Javascript
微信小程序dom操作的替代思路实例分析
2018/12/06 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
python3实现抓取网页资源的 N 种方法
2017/05/02 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
2018/02/22 Python
python 实现A*算法的示例代码
2018/08/13 Python
python学生信息管理系统(初级版)
2018/10/17 Python
Python assert关键字原理及实例解析
2019/12/13 Python
Python生成词云的实现代码
2020/01/14 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
Python实现异步IO的示例
2020/11/05 Python
如何利用Python写个坦克大战
2020/11/18 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
会计专业毕业生求职信分享
2014/01/03 职场文书
活动邀请函范文
2014/01/19 职场文书
安全责任书范本
2014/04/15 职场文书
小学家长意见怎么写
2015/06/03 职场文书
高中政治教师教学反思
2016/02/23 职场文书
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL