所需依賴: html
Flask
Flask-RESTful
Python2.7 linux
備註:flask-restful不能和flask的render_template模板結合使用,由於restfulapi的設計不是爲了在flask裏直接返回html。
在使用restful時,使用先後端分離模式。 sql
本文檔不包含flask的認證登錄功能 shell
restful說明 數據庫
restful把全部url請求當作資源, 資源下的get方法對應get請求,post方法對應post請求,put方法對應put請求,delete方法對應delete請求。 json
get請求,post新增, put修改, delete刪除flask
具體的url設計模式,參考文章:RESTful API 設計指南後端
. ├── assets │ ├── __init__.py │ ├── server.py │ ├── urls.py ├── run.py
__init__.py設計模式
from flask import Blueprint assets_page = Blueprint('assets_page', __name__) import urls
urls.py api
#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)
#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)
在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系列操做數據庫的文章