1. 程式人生 > >使用flask開發RESTful架構的api伺服器端(3)–簡單的RESTful services

使用flask開發RESTful架構的api伺服器端(3)–簡單的RESTful services

學生資訊資源為:

資源名稱 資源型別
學生號 int
姓名 str
年齡 int
籍貫 str
平均分 float

第一步先將資料儲存在記憶體中,使用資料庫進行資訊儲存在之後章節再繼續介紹;

1、建立flask伺服器

首先與第二章的用例相同建立一個flask的伺服器:

123456789 form flask import Flaskapp=Flask(__name__)@app.route('/')def welcome():return"Welcome to studement management system!"app.run(host="192.168.1.1",post=1234,debug=True)

這樣就在192.168.1.1的1234埠上開啟了監聽伺服器了,此時服務端只對’/’請求有響應,其它路徑的響應都會返回404錯誤碼;

2、POST:上傳資訊

HTTP4個方法的第一個是POST,通常用來上傳資訊:

123456789101112131415161718 from flask import jsonifyfrom flask import requeststudents=[]@app.route('/student/',methods=['POST'])def add_student():ifnotrequest.json ornot'id'inrequest.json ornot'name'inrequest.json ornot'age'intrequest.json ornot'birthplace'inrequest.json ornot'grade'inrequest.json:abort(400)student={'id':request.json['id'],'name':request.json['name'],'age':request.json.get('age',""),'birthplace':request.json.get('birthplace',""),'grade':request.json['grade']}students.append(student)return"success"

使用flask的request方法可以很方便的得到請求資料,使用json來進行資料傳輸也是非常好用的方法,使用curl命令來進行測試:

Python
123456789 curl-i-H"Content-Type: application/json"-XPOST'http://192.168.1.1:1234/student'\-d\{\id:1312441,\"name":"lucy",\"birthplace":"beijin",\"age":20,\"grade":90}

注意需要將Content-Type設定為json flask的request模組才會對請求資料部分做json格式得解析;

如果返回200狀態碼並回復success,則資料新增成功;

3、PUT:更新資訊

PUT方法通常用來進行資料的更新,相應的curl命令為:

Python
1234567 curl-i-H"Content-Type: application/json"-XPUT'http://192.168.1.1:1234/student?id=1312441'\-d\{\"birthplace":"beijin",\"age":20,\"grade":90}

以uri中引數的數值作為key,查詢需要修改的資訊條目,服務端程式碼為:

123456789101112131415161718192021222324 from flask import jsonifyfrom flask import requestfrom flask import make_responsestudents=[]@app.route('/students',methods='PUT')def update_students():ifnotrequest.args ornot'id'inrequest.args:abort(400)update_id=request.args['id']update_id=int(update_id)student=filter(lambdat:t['id']==update_id,students)iflen(student)==0:abort(400)ifnotrequest.json:abort(403)student[0]['name']=request.json.get('name',student[0]['name'])student[0]['age']=request.json.get('age',student[0]['age'])student[0]['grade']=request.json.get('grade',student[0]['grade'])student[0]['birthplace']=request.json.get('birthplace',student[0]['birthplace'])returnjsonify({student:student[0]})

如果找不到指定id的學生就會返回400錯誤,如果修改成功則返回修改後的學生資訊;

4、DELETE:刪除指定資訊

使用DELETE來刪除指定的學生資訊,相應的請求資訊為:

1 curl-XDELETE'http://192.168.1.1:1234/student?id=1312441'

服務端處理程式碼為

12345678910111213141516171819 from flask import jsonifyfrom flask import requestfrom flask import make_responsestudents=[]@app.route('/students',methods='DELETE')def delete_students():ifnotrequest.args:abort(400)if'id'inrequest.args:d_id=request.args['id']d_id=int(d_id)student=filter(lambdat:t['id']==d_id,students)iflen(student)==0:abort(400)students.remove(student[0])return"success"

5、GET:獲取資訊

使用GET方法獲取學生資訊,相應請求資訊為:

1 curl-XGET'http://192.168.1.1:1234/student?id=1312441'

服務端處理程式碼為:

12345678910111213141516 from flask import jsonifyfrom flask import requestfrom flask import make_responsestudents=[]@app.route('/students',methods='GET')def delete_students():ifnotrequest.args:abort(400)get_id=request.args['id']get_id=int(get_id)student=filter(lambdat:t['id']==get_id,students)iflen(student)==0:abort(400)returnjsonify({'student':student[0]})

實現了4個方法後,一個簡單的web伺服器就成型了。更復雜的功能可以在此基礎上繼續加強,下一章將介紹如何使用flask+資料庫來存取資料;