1.Flask-RESTful 概述; javascript
1.1 Flask-RESTful 提供的最主要的基礎就是資源(resources)。資源(Resources)是構建在 Flask 可拔插視圖 之上,只要在你的資源(resource)上定義方法就可以容易地訪問多個 HTTP 方法。一個待辦事項應用程序的基本的 CRUD 資源看起來像這樣:提供的最主要的基礎就是資源(resources)。資源(Resources)是構建在 Flask 可拔插視圖 之上,只要在你的資源(resource)上定義方法就可以容易地訪問多個 HTTP 方法。一個待辦事項應用程序的基本的 CRUD 資源看起來像這樣:html
1.2 思惟導圖;
java
2.實例代碼;python
from flask import Flask, request from flask_restful import reqparse, abort, Api, Resource app = Flask(__name__) api = Api(app) opsList = { 'ops01': {'task': '我是第一系統運維'}, 'ops02': {'task': '我是第二個應用運維'}, 'ops03': {'task': '我是第三個運維開發'} } def abort_if_todo_doesnt_exist(ops_id): if ops_id not in opsList: abort(404, message="OPS {} doesn't exist".format(ops_id)) parser = reqparse.RequestParser() parser.add_argument('task', type=str) class Todo(Resource): def get(self, ops_id): abort_if_todo_doesnt_exist(ops_id) return opsList[ops_id] def delete(self, ops_id): abort_if_todo_doesnt_exist(ops_id) del opsList[ops_id] return '', 204 def put(self, ops_id): args = parser.parse_args() task = {'task': args['task']} opsList[ops_id] = task return task, 201 class TodoList(Resource): def get(self): return opsList def post(self): args = parser.parse_args() todo_id = int(max(opsList.keys()).lstrip('todo')) + 1 todo_id = 'todo%i' % todo_id opsList[todo_id] = {'task': args['task']} return opsList[todo_id], 201 api.add_resource(TodoList, '/opslist') api.add_resource(Todo, '/opslist/<todo_id>') if __name__ == '__main__': app.run( debug=True)
(1)引入須要的庫名、函數、變量等,並作簡單的Application初始化:json
from flask import Flaskfrom flask_restful import reqparse, abort, Api, Resource app = Flask(__name__) api = Api(app)
(2)定義咱們須要操做的資源類型(都是json格式的):flask
TODOS = { 'todo1': {'task': '我是第一個測試'}, 'todo2': {'task': '我是第二個測試'}, 'todo3': {'task': '我是第三個測試'}, }
(3)Flask-RESTful提供了一個用於參數解析的RequestParser類,相似於Python中自帶的argparse類,能夠很方便的解析請求中的-d參數,並進行類型轉換。api
parser = reqparse.RequestParser() parser.add_argument('task')
(4)咱們觀察標準的API接口,這裏的接口能夠分爲兩類:帶有item_id的,和不帶有item_id的。前者是操做單一資源,後者是操做資源列表或新建一個資源。ruby
從操做單一資源開始,繼承Resource類,並添加put / get / delete方法:bash
class Todo(Resource): def get(self, ops_id): abort_if_todo_doesnt_exist(ops_id) return opsList[ops_id] def delete(self, ops_id): abort_if_todo_doesnt_exist(ops_id) del opsList[ops_id] return '', 204 def put(self, ops_id): args = parser.parse_args() task = {'task': args['task']} opsList[ops_id] = task return task, 201
(5)繼續操做資源列表,繼承Resource類,並添加get / post方法:restful
class TodoList(Resource): def get(self): return opsList def post(self): args = parser.parse_args() todo_id = int(max(opsList.keys()).lstrip('todo')) + 1 todo_id = 'todo%i' % todo_id opsList[todo_id] = {'task': args['task']} return opsList[todo_id], 201
(6)資源操做類定義完畢以後,須要設置路由,即告訴Python程序URL的對應關係。
api.add_resource(TodoList, '/opslist') api.add_resource(Todo, '/opslist/<todo_id>')
這樣當咱們請求url時,就能根據url類型,找到相應的資源類,並調用對應方法。
3.Postman 進行測試
(1).查詢有哪些支持的資源類型;
(2)支持類型的第一個功能接口;
(2)支持類型的第二個功能接口;
(2)支持類型的第三個功能接口;
參考連接:http://www.pythondoc.com/Flask-RESTful/quickstart.html 中文官網;