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中遍历文件的3个方法
Sep 02 Python
Python实例一个类背后发生了什么
Feb 09 Python
Python实现二维有序数组查找的方法
Apr 27 Python
python中OrderedDict的使用方法详解
May 05 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
May 16 Python
老生常谈Python基础之字符编码
Jun 14 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
Mar 14 Python
Python抽象和自定义类定义与用法示例
Aug 23 Python
在python中实现将一张图片剪切成四份的方法
Dec 05 Python
Python字符串的常见操作实例小结
Apr 08 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
python异步编程 使用yield from过程解析
Sep 25 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 cookie 登录验证示例代码
2009/03/16 PHP
PHP数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
PHP数据类型的总结分析
2013/06/13 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
PHP中list方法用法示例
2016/12/01 PHP
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
javascript获取网页宽高方法汇总
2015/07/19 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
2020/01/21 Javascript
[01:03:36]Ti4 循环赛第三日DK vs Titan
2014/07/12 DOTA
[42:32]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第二局
2016/02/27 DOTA
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python实现分割文件及合并文件的方法
2015/07/10 Python
简述Python中的进程、线程、协程
2016/03/18 Python
python查看微信好友是否删除自己
2016/12/19 Python
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
python利用lxml读写xml格式的文件
2017/08/10 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
python 输出所有大小写字母的方法
2019/01/02 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
pycharm设置当前工作目录的操作(working directory)
2020/02/14 Python
python 日志模块 日志等级设置失效的解决方案
2020/05/26 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
DOUGLAS荷兰:购买香水和化妆品
2020/10/24 全球购物
医学检验专业个人求职信范文
2013/12/04 职场文书
员工入职担保书范文
2014/04/01 职场文书
班级活动总结格式
2014/08/30 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
国博复兴之路观后感
2015/06/02 职场文书
董事会决议范本
2015/07/01 职场文书
2016年度基层党建工作公开承诺书
2016/03/25 职场文书