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使用minidom读写xml的方法
Jun 03 Python
python开发之IDEL(Python GUI)的使用方法图文详解
Nov 12 Python
Python实现定时任务
Feb 08 Python
python3 模拟登录v2ex实例讲解
Jul 13 Python
python 爬虫 批量获取代理ip的实例代码
May 22 Python
python3.X 抓取火车票信息【修正版】
Jun 19 Python
Django代码性能优化与Pycharm Profile使用详解
Aug 26 Python
Python使用sklearn实现的各种回归算法示例
Jul 04 Python
python3 map函数和filter函数详解
Aug 26 Python
pyinstaller还原python代码过程图解
Jan 08 Python
python中pop()函数的语法与实例
Dec 01 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 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对gzip文件或者字符串解压实例参考
2008/07/25 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
2014/10/24 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
基于jquery的web页面日期格式化插件
2011/11/15 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
如何用jquery控制表格奇偶行及活动行颜色
2014/04/20 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
JavaScript简单修改窗口大小的方法
2015/08/03 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
2017/01/22 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
[02:03]《现实生活中的DOTA2》—林书豪&DOTA2职业选手出演短片
2015/08/18 DOTA
Python3实现生成随机密码的方法
2014/08/23 Python
解读Django框架中的低层次缓存API
2015/07/24 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
Python3实现的画图及加载图片动画效果示例
2018/01/19 Python
对numpy中的transpose和swapaxes函数详解
2018/08/02 Python
python实现感知器算法(批处理)
2019/01/18 Python
用pycharm开发django项目示例代码
2019/06/13 Python
Python类中self参数用法详解
2020/02/13 Python
python datetime时间格式的相互转换问题
2020/06/11 Python
为什么称python为胶水语言
2020/06/16 Python
python 下划线的不同用法
2020/10/24 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
html5读取本地文件示例代码
2014/04/22 HTML / CSS
临床医学专业个人的自我评价
2013/09/27 职场文书
党员干部廉洁承诺书
2014/05/28 职场文书
人民调解员培训方案
2014/06/05 职场文书
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python