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实现从脚本里运行scrapy的方法
Apr 07 Python
Python中在for循环中嵌套使用if和else语句的技巧
Jun 20 Python
利用python模拟sql语句对员工表格进行增删改查
Jul 05 Python
浅谈python中copy和deepcopy中的区别
Oct 23 Python
Python探索之爬取电商售卖信息代码示例
Oct 27 Python
Python实现矩阵转置的方法分析
Nov 24 Python
Redis使用watch完成秒杀抢购功能的代码
May 07 Python
JSON文件及Python对JSON文件的读写操作
Oct 07 Python
简单了解Django应用app及分布式路由
Jul 24 Python
python实现PID算法及测试的例子
Aug 08 Python
python输出带颜色字体实例方法
Sep 01 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
Feb 16 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 max_execution_time执行时间问题
2011/07/17 PHP
PHP中使用Imagick操作PSD文件实例
2015/01/26 PHP
php文档工具PHP Documentor安装与使用方法
2016/01/25 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
JavaScript中的Document文档对象
2008/01/16 Javascript
Javascript中的apply()方法浅析
2015/03/15 Javascript
jQuery控制frames及frame页面JS的方法
2016/03/08 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
微信小程序控制台提示warning:Now you can provide attr &quot;wx:key&quot; for a &quot;wx:for&quot; to improve performance解决方法
2019/02/21 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
python实现马耳可夫链算法实例分析
2015/05/20 Python
Python错误: SyntaxError: Non-ASCII character解决办法
2017/06/08 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
Python中collections模块的基本使用教程
2018/12/07 Python
opencv转换颜色空间更改图片背景
2019/08/20 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
2019/10/28 Python
浅谈python中统计计数的几种方法和Counter详解
2019/11/07 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
用python介绍4种常用的单链表翻转的方法小结
2020/02/24 Python
Django基于Models定制Admin后台实现过程解析
2020/11/11 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
中国第一家杂志折扣订阅网:杂志铺
2016/08/30 全球购物
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
Wallis官网:英国女装零售商
2020/01/21 全球购物