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获取当前计算机cpu数量的方法
Apr 18 Python
深入浅析Python中的yield关键字
Jan 24 Python
python实现SOM算法
Feb 23 Python
python删除不需要的python文件方法
Apr 24 Python
python3模块smtplib实现发送邮件功能
May 22 Python
Django框架登录加上验证码校验实现验证功能示例
May 23 Python
在Pycharm中调试Django项目程序的操作方法
Jul 17 Python
python调用c++返回带成员指针的类指针实例
Dec 12 Python
python异常处理、自定义异常、断言原理与用法分析
Mar 23 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
Jun 29 Python
python安装cx_Oracle和wxPython的方法
Sep 14 Python
python 标准库原理与用法详解之os.path篇
Oct 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
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
php实现scws中文分词搜索的方法
2015/12/25 PHP
浅谈PHP中的
2016/04/23 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
改进:论坛UBB代码自动插入方式
2006/12/22 Javascript
JavaScript表单常用验证集合
2008/01/16 Javascript
基于MooTools的很有创意的滚动条时钟动画
2010/11/14 Javascript
解析JavaScript中的不可见数据类型
2013/12/02 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
微信小程序开发中的疑问解答汇总
2017/07/03 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
javascript实现移动端红包雨页面
2020/06/23 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
python递归计算N!的方法
2015/05/05 Python
轻松掌握python设计模式之策略模式
2016/11/18 Python
pandas.loc 选取指定列进行操作的实例
2018/05/18 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
CSS3 transform的skew属性值图文详解
2014/07/21 HTML / CSS
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
泰国折扣酒店预订:Hotels2Thailand
2018/03/20 全球购物
俄罗斯在线大型超市:ТутПросто
2021/01/08 全球购物
年终晚会活动方案
2014/08/21 职场文书
个人作风建设剖析材料
2014/10/11 职场文书
个人委托函范文
2015/01/29 职场文书
2015年建筑工作总结报告
2015/05/04 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
详解Python中*args和**kwargs的使用
2022/04/07 Python
vue elementUI批量上传文件
2022/04/26 Vue.js