Flask-RESTful插件介绍--2017年4月7日

Flask-RESTful概述:为了快速构建RESTful API的Flask插件,能和现有的ORM配合的轻量级数据抽象
参考链接:http://www.pythondoc.com/Flask-RESTful/quickstart.html
http://dormousehole.readthedocs.io/en/latest/可插拔视图
资源路由:资源(Resources)是构建在 Flask 可拔插视图 之上,只要在你的资源(resource)上定义方法就能够容易地访问多个 HTTP 方法。
参数解析:Flask-RESTful 内置了支持验证请求数据,它使用了一个类似 argparse 的库。
数据格式化:Flask-RESTful 提供了 fields 模块和 marshal_with() 装饰器。

from flask import Flask,request
from flask_restful import Api,Resource,reqparse,abort

app = Flask(__name__)
api = Api(app)

todos ={
    ‘todo1‘:{‘task‘:‘build an API‘},
    ‘todo2‘:{‘task‘:‘????‘},
    ‘todo3‘:{‘task‘:‘profit!‘},
}

def abort_if_todo_doesnt_exist(todo_id):
    if todo_id not in todos:
        abort(404,message="Todo{} doesn‘t exist".format(todo_id))

parser = reqparse.RequestParser()
parser.add_argument(‘task‘,type=str)

class Todo(Resource):
    def get(self,todo_id):
        abort_if_todo_doesnt_exist(todo_id)
        return todos[todo_id]
    def delete(self,todo_id):
        abort_if_todo_doesnt_exist(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
    def post(self):
        args = parser.parse_args()
        todo_id = int(max(todos.keys()).lstrip(‘todo‘))+1
        todo_id = ‘todo%i‘ % todo_id
        todos[todo_id] = {‘task‘:args[‘task‘]}
        return todos[todo_id],201

class TodoSimple(Resource):
    def get(self,todo_id):
        return {todo_id: todos[todo_id]}
    def put(self,todo_id):
        todos[todo_id] = request.form[‘data‘]
        return {todo_id:todos[todo_id]}

class HelloWorld(Resource):
    def get(self):
        print ‘hello world‘
        return {‘hello‘:‘world‘}, 201, {‘Etag‘: ‘some-opaque-string‘}

api.add_resource(HelloWorld,‘/‘)
api.add_resource(TodoSimple,‘/<string:todo_id>‘)
api.add_resource(TodoList,‘/todos‘)
api.add_resource(Todo,‘/todos/<todo_id>‘)

if __name__ == ‘__main__‘:
    app.run(debug=True)
 

curl http://localhost:5000/todos
curl http://localhost:5000/todos/todo3
curl http://localhost:5000/todos/todo2 -X DELETE -v
curl http://localhost:5000/todos -d "task=something new" -X POST -v
curl http://localhost:5000/todos/todo3 -d "task=something different" -X PUT -v

时间: 2024-11-13 06:50:17

Flask-RESTful插件介绍--2017年4月7日的相关文章

2017年8月9日学习内容存放 #socket通信介绍

2017年8月9日学习内容存放 1 #socket通信介绍 2 3 ''' 4 OSI七层 5 6 应用 7 表示 8 会话 9 传输 10 网络 ip 11 数据链路 mac 12 物理层 网线 13 14 15 16 http 17 smtp 18 dns 19 ftp 20 ssh 21 snmp 22 icmp ping 23 dhcp 24 25 26 27 发 send 28 收 receive 29 30 31 32 33 TCP/IP 三次握手,四次断开 34 35 UDP 36

2017年6月26日课堂笔记

2017年6月26日 星期一 晴 空气质量:轻度污染 内容:MySQL第一节课: 1.基本概念 1)MySQL: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件. MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表

【天一家园群】2017年3月18日群猜谜会谜题

[天一家园群]2017年3月18日群猜谜会谜题 1.关下叹别泪终落(历代宰相)吴汉/林晓斌2.皈依佛前,自了一生(称谓)伯伯/洪育敏3.终生企求为人正(字)一 4.“深紫浓香三百朵”(京剧目)群英会/田鸿牛5.芳踪飘忽至交来(成语)方兴未艾/陈见生6.改变老婆的本性(称谓二)更夫.人质/钟浩泽7.枝头蝶儿伴黄果(植物)栾树/刘雪春8.重新摆布更漂亮(字)帅/李国元9.“弃却锄与犁”(诗品一句)时见美人/邓启明10.“杖头挂钱却为何”(辛弃疾词句)花在杯中/李祝英11.机场边上禁烟火(外民族)杜因

【谜海拾贝群】2017年3月25日群友合擂谜会题

[谜海拾贝群]2017年3月25日群友合擂谜会题 人心3条1.眉月斜钩,星横北斗(13笔字)戥北斗象形丶2.河边有几座桥(字)沉3.一扫码,加个人(11笔字)鸽逗号入谜 巽离3条1.言而无信者,大多吞下前言,尽留后语 (三字谜目) 奢侈品2.马孟起独来犯边 (古生物) 猛犸3.枪归仓,尤未晚,一夕白首,放马西凉 (明人)冯梦龙 蓝色彼岸4条1.勒令全家都出接 穴位三 蕉心 命门人中人迎 2. 人生七十古来稀 四字俗语 男女老少 3. 孤帆一片日边来 袁去华词一句 天际归舟 4. 皆非主力部队 成

2017年8月14日套题记录 | 普及组

写在前面 今天登洛谷发现离Noip剩下88天了??(虽然看起有点久),然后觉得似乎水了一个暑假什么也没做(虽然学了点数据结构和一些奇奇Gaygay的东西),于是打开题库发现去年Long Happy的集训套题我似乎没有提交过,那就一天一套题,顺便码个题解+心得(雾? T2.传作业 题目描述 某十三同学一日上学迟到,此时已经开始上早自习了,所以他只好请同学帮忙把作业传到组长那里.由于刚开学不久,某十三同学还没来得及认识所有同学,所以传作业时只好找熟悉的同学.已知某十三与组长之间有N个他熟悉的同学,并

老男孩教育每日一题-2017年5月9日-vim命令粘贴带#号或注释信息格式会出现混乱情况怎么办

1.题目 老男孩教育每日一题-2017年5月9日-vim编辑器使用知识点:vim命令粘贴带#号或注释信息格式会出现混乱情况,有什么方法进行解决?问题说明:每次复制代码时,如果代码里有 //或# 这样的注释就容易让格式乱掉,显示的内容不整齐,并不是所期望的显示格式. 2.参考答案 原因分析: 是由于vim编辑命令的自动缩进功能所影响,因此粘贴带注释的代码时可以取消自动缩进 问题解决: vim在粘贴代码时会自动缩进,把代码搞得一团糟糕,甚至可能因为某行的一个注释造成后面的代码全部被注释掉:最初的解决

老男孩教育每日一题-2017年5月4日-有一个oldboy.txt文件,把里面所有字母都转换成大写

老男孩教育每日一题-2017年5月4日-有一个oldboy.txt文件,把里面所有字母都转换成大写 文件内容如下: [[email protected] oldboy]# cat oldboy.txt  oldboy.blog.51cto.com www.oldboyedu.com 方法一:sed [[email protected] oldboy]# sed 's#[a-z]#\u&#g' oldboy.txt OLDBOY.BLOG.51CTO.COM WWW.OLDBOYEDU.COM 方

2017年4月25日上午

2017年4月25日上午想提高记忆单词的效率,所以自己想办法把英语单词的多种词意联系起来记忆,所以把之前背的单词再复习一遍.学习了南北桥芯片,为一块电脑主板,以CPU插座为北的话,靠近CPU插座的一个起连接作用的芯片称为"北桥芯片",英文名:North Bridge Chipset.北桥芯片就是主板上离CPU最近的芯片.

2017年3月30日上午学习日志

2017年3月30日上午复习了高等数学,学习高等数学教材书第二章第一节导数概念,并按照自己的思路记笔记,并背英语单词及其语法.