所需依赖:
- Flask
- Flask-RESTful
- Python2.7
备注: flask-restful 不能和 flask 的 render_template 模板结合使用, 因为 restfulapi 的设计不是为了在 flask 里直接返回 html.
在使用 restful 时, 使用前后端分离模式.
本文档不包含 flask 的认证登陆功能
restful 说明
restful 把所有 url 请求当做资源, 资源下的 get 方法对应 get 请求, post 方法对应 post 请求, put 方法对应 put 请求, delete 方法对应 delete 请求.
get 请求, post 新增, put 修改, delete 删除
具体的 url 设计模式, 参考文章: RESTful API 设计指南
1, 目录结构
.
├── assets
│ ├── __init__.py
│ ├── server.py
│ ├── urls.py
├── run.py
2,assets 下文件配置
__init__.py
- from flask import Blueprint
- assets_page = Blueprint('assets_page', __name__)
- import urls
urls.py
- #coding:utf-8
- from assets import assets_page
- from flask_restful import Resource, API
- from server import Servers, Server
- API = API(assets_page)
- # 注册路由
- API.add_resource(Servers, '/servers')
- API.add_resource(Server, '/servers/<_id>')
server.py
- #coding:utf-8
- from flask import request
- from flask_restful import Resource, API
- class Servers(Resource):
- def get(self):
- # 返回所有数据
- return 'this is data list'
- def post(self):
- # 新增数据
- data = request.get_json()
- return 'add new data: %s'%data
- class Server(Resource):
- def get(self,_id):
- # 返回单条数据
- return 'this data is %s'%_id
- def delete(self,_id):
- # 删除单条数据
- return 'delete data: %s'%_id
- def put(self, _id):
- # 修改单条数据
- data = request.get_json()
- return 'put data %s: %s'%(_id, data)
3,run.py 配置
- #coding:utf-8
- from flask import Flask
- # 导入蓝图实例
- from assets import assets_page
- App = Flask(__name__,
- template_folder='templates',
- static_folder='static',
- )
- # 注册蓝图
- App.register_blueprint(assets_page)
- if __name__ == '__main__':
- App.run(host='0.0.0.0', port=5000, debug=True)
4, 测试
在 Linux 终端测试
- # 获取列表:
- $ curl 127.0.0.1:5000/servers
- "this is data list"
- # 新增数据
- $ curl -X POST -H "Content-Type:application/JSON" -d '{"name":"yangr"}' 127.0.0.1:5000/servers
- "add new data: {u'name': u'yangr'}"
- # 修改数据
- $ curl -X PUT -H "Content-Type:application/JSON" -d '{"name":"yangr"}' 127.0.0.1:5000/servers/2
- "put data 2: {u'name': u'yangr'}"
- # 删除数据
- $ curl -X DELETE 127.0.0.1:5000/servers/3
- "delete data: 3"
后续再出 sqlalchemy 系列操作数据库的文章
来源: http://blog.51cto.com/yangrong/2294308