這篇文章,是個人自言自語數據庫
A: 當客戶端與服務器端分離時, 須要經過API傳遞資源json
A: 即數據庫中的數據flask
A: 使用json的方式表示, 以鍵值的方式表示一個資源, 每個鍵表明資源的一個屬性; 使用數組(列表)表示資源的集合, 例如api
[ { 'id': 1, 'username': 'neo1218' }, { 'id': 2, 'username': 'zxc0328' } ]
A: 涉及HTTP方法映射: 以下表數組
GET ------> 獲取(集合,特定資源) POST -----> 建立(特定資源) PUT ------> 更新(特定資源) DELETE ---> 刪除(特定資源)
A: <br/>服務器
flask須要把數據庫資源經過json的形式提供出去, 因此須要在數據庫Model中定義to_json方法
, 以
json的形式表示數據庫數據, 以User類爲例session
class User(db.Model): ...... def to_json(self): json_user = { 'id': self.id, 'username': self.username } return json_user ......
flask須要接受客戶端發送的json數據從而用於建立資源,
因此須要在數據庫Model中定義from_json方法
code
class User(db.Model): ...... @staticmethod def from_json(json_data): user = User( username = json_data.get('username'), password = json_data.get('password') ) return user ......
並在API代碼中搭配[request.get_json()
]()使用資源
/api/users.py from flask import request @api.route('/users/', methods=['POST']) def create_user(): user = User.from_json(request.get_json()) db.session.add(user) db.session.commit()
仍是以用戶資源爲例:get
@api.route('/users/', methods=['GET']) def get_users(): """獲取用戶資源集合""" pass @api.route('/users/<int:id>/', methods=['GET']) def get_id_users(id): """獲取特定id用戶資源""" pass @api.route('/users/', methods=['GET', 'POST']) def create_user(): """建立用戶資源""" pass @api.route('/users/<int:id>/', methods=['GET', 'PUT']) def update_id_user(id): """更新特定id用戶資源""" pass @api.route('/users/<int:id>/', methods=['GET', 'DELETE']) def delete_id_user(id): """刪除特定id用戶""" pass
A: 你這不是廢話嗎....