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编写的最短路径算法
Mar 25 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
Apr 11 Python
python 爬虫出现403禁止访问错误详解
Mar 11 Python
Python实现导出数据生成excel报表的方法示例
Jul 12 Python
基于Python实现的ID3决策树功能示例
Jan 02 Python
Python2包含中文报错的解决方法
Jul 09 Python
Python面向对象程序设计之继承与多继承用法分析
Jul 13 Python
详解python读取和输出到txt
Mar 29 Python
详解Python3序列赋值、序列解包
May 14 Python
python3使用腾讯企业邮箱发送邮件的实例
Jun 28 Python
在macOS上搭建python环境的实现方法
Aug 13 Python
Python自动化之批量处理工作簿和工作表
Jun 03 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将会员数据导入到ucenter的代码
2010/07/18 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
phpcms中的评论样式修改方法
2016/10/21 PHP
thinkPHP模板中for循环与switch语句用法示例
2016/11/30 PHP
php实现微信企业转账功能
2018/10/02 PHP
PHP Include文件实例讲解
2019/02/15 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
jquery获取多个checkbox的值异步提交给php
2015/07/07 Javascript
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
Bootstrap CSS布局之表格
2016/12/17 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
vue+mock.js实现前后端分离
2019/07/24 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
通过vue刷新左侧菜单栏操作
2020/08/06 Javascript
javascript实现放大镜功能
2020/12/09 Javascript
Vue ​v-model相关知识总结
2021/01/28 Vue.js
python字典的遍历3种方法详解
2019/08/10 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
TUMI新加坡官网:国际领先的商旅箱包品牌
2019/01/12 全球购物
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
类的核心特性有哪些
2014/01/01 面试题
幼儿园健康教育方案
2014/06/14 职场文书
体育教师求职信
2014/06/30 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
高中生物教学反思
2016/02/20 职场文书
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js