Flask-restful API演示
来源:互联网 发布:茄子快传软件 编辑:程序博客网 时间:2024/05/01 13:05
Flask-restful API演示
偶然一次机会看见了国外大神写的Flask框架关于restful api的介绍,链接在此点击打开链接
不得不说,本人最近也在做服务器框架搭建,一直搞不懂,我需要的服务器不需要界面,也就是不需要html解析,也就没有了flask中的render_tempeter这个东东。后来看见这篇文章,感觉特别好,但学完还是有一个疑问,怎么用restful来传输图片,知道将二进制流通过base64转化,但还是不知怎么弄。正在努力学习中。。。
现在讲学习restful api的过程记录下来。
在此之前,http各种请求方式我就不说了。
如链接文章所说,请求方式为:
http://[hostname]/todo/api/v1.0/
1.首先搭建简单的flask服务器叫app.py:
<span style="font-size:14px;">#!flask/bin/pythonfrom flask import Flaskapp = Flask(__name__)@app.route('/')def index(): return "Hello, World!"if __name__ == '__main__': app.run(debug=True)</span>这样我们就可以打开浏览器观察浏览器上的内容了。等等,不是说好的不用界面的吗?别着急,下面正式进入RASTful的介绍。
2.搭建RASTful API服务器
<span style="font-size:14px;">#!flask/bin/pythonfrom flask import Flask, jsonifyapp = Flask(__name__)tasks = [ { 'id': 1, 'title': u'Buy groceries', 'description': u'Milk, Cheese, Pizza, Fruit, Tylenol', 'done': False }, { 'id': 2, 'title': u'Learn Python', 'description': u'Need to find a good Python tutorial on the web', 'done': False }]@app.route('/todo/api/v1.0/tasks', methods=['GET'])def get_tasks(): return jsonify({'tasks': tasks})if __name__ == '__main__': app.run(debug=True)</span>
这时,我们就可以使用curl这个工具来测试
<span style="font-size:14px;">curl -i http://localhost:5000/todo/api/v1.0/tasks</span>
但我们不需要获得整个内容啊,于是我们可以添加参数
<span style="font-size:14px;">from flask import abort@app.route('/todo/api/v1.0/tasks/<int:task_id>', methods=['GET'])def get_task(task_id): task = [task for task in tasks if task['id'] == task_id] if len(task) == 0: abort(404) return jsonify({'task': task[0]})</span>这里就可以看出来了,在路由选择的时候,添加参数,但如果是二进制呢,参数怎么弄呢?
我们使用下面的命令测试一下:
curl -i http://localhost:5000/todo/api/v1.0/tasks/2
如果发现404资源没有找到,我们使用下面的代码友好化:
from flask import make_response@app.errorhandler(404)def not_found(error): return make_response(jsonify({'error': 'Not found'}), 404)
重点来了,使用post来更新服务器:
from flask import request@app.route('/todo/api/v1.0/tasks', methods=['POST'])def create_task(): if not request.json or not 'title' in request.json: abort(400) task = { 'id': tasks[-1]['id'] + 1, 'title': request.json['title'], 'description': request.json.get('description', ""), 'done': False } tasks.append(task) return jsonify({'task': task}), 201
测试一下:
curl -i -H "Content-Type: application/json" -X POST -d '{"title":"Read a book"}' http://localhost:5000/todo/api/v1.0/tasks
到此为止,整个代码已经全部弄好。
希望有朋友如果能够解答上面的问题,能够给我留言,谢谢!
0 0
- Flask-restful API演示
- 使用 Flask-RESTful 设计 RESTful API
- 使用flask 构建基本的 restful api
- Python使用Flask搭建RESTful API
- 使用Flask搭建Restful API后端服务器
- Python Flask Restful API 基础篇
- 使用 Python 和 Flask 设计 RESTful API
- Python使用Flask搭建RESTful API
- 使用 Python 和 Flask 设计 RESTful API
- 使用 Python 和 Flask 设计 RESTful API
- flask RESTful api学习 WITH POSTMAN调试
- Flask-Restful
- 用 Flask 来写个轻博客 (32) — 使用 Flask-RESTful 来构建 RESTful API 之一
- 用 Flask 来写个轻博客 (33) — 使用 Flask-RESTful 来构建 RESTful API 之二
- 用 Flask 来写个轻博客 (34) — 使用 Flask-RESTful 来构建 RESTful API 之三
- 用 Flask 来写个轻博客 (35) — 使用 Flask-RESTful 来构建 RESTful API 之四
- 用 Flask 来写个轻博客 (36) — 使用 Flask-RESTful 来构建 RESTful API 之五
- Designing a RESTful API with Python and Flask
- RegAsm注册DLL组件使用jacob调用的问题com.jacob.com.ComFailException: Can't co-create object
- Android CircleProgress:可自由定制实现各种样式圆形加载进度
- 07-图6 旅游规划
- 08-图7 公路村村通
- 欢迎使用CSDN-markdown编辑器
- Flask-restful API演示
- 08-图8 How Long Does It Take
- 学习--jquery 记录 使用js判断滚轮滚动方向
- caffe的finetuning是如何更新网络参数的?
- listView 优化 -ViewHolder
- CSDN博客搬家到WordPress
- Linux+Nginx+Mysql/MariaDB+Perl/PHP/Python安装配置
- struts2中iterator标签的相关使用
- UIWebView使用示例(一)