來做個使用者CRUD
昨日教授大家如何初始化flask-restful以及建立第一個
,到目前flask-restful的基本知識以經教授一半了,今天在繼續教授其他基本知識。Resource
User基本結構
首先定義一個User這個Resource的基本結構,內容如下列例子:
from flask_restful import Resource
class User (Resource):
def get(self, name):
pass
def post(self, name):
pass
def put(self, name):
pass
def delete(self, name):
pass
讀者們可以把這內容複製貼上一個放在resource資料夾內的
如同其字面上的意思就是不做任何事情,我們僅是先把框架定義好而已。user.py
`,這邊先說明一下
`pass
註冊Resource
昨日的教程已有教授如何註冊Resource,不過如何將name由url帶入方法內呢?所以接下來更進一步教授如何綁定url上的變數,請大家先看看以下例子:
from flask import Flask
from flask_restful import Api
from resources.user import User
app = Flask(__name__)
api = Api(app)
api.add_resource(User, "/user/<string:name>")
if __name__ == "__main__":
app.run()
如此可以把
的變數。User
`綁定到url
`/user/
`上面去,而最後一個內容會轉型成字串傳遞給方法當作是
`name
完成Resource以及綁定User後,接下來有兩個選擇,繼續實作其內容,或是先把POSTMAN設定好,在此筆者頃向先設置POSTMAN再來一一完成user的method。
設定POSTMAN
由於url上需要提交
加到環境變數並設定好對應的四個方法的請求資料,相信經過昨日的教程應該難不倒讀者,若是有困難的讀者在複習一下:name
`,這裡為了方便我們也把
`name
首先先點擊
即可,完成結果如下圖顯示:眼睛
`看到環境變數的視窗,在按下
`EDIT
`的按鈕開始修改,最後加入
`name
接下來設定四個請求的url如下列四圖所示:
這時可以按下
,相信響應應該沒有任何東西,如果有錯誤內容請回覆告知喔,因為你遇到問題了。接下來就開始實作以下內容了。SEND
實作GET方法
相信教經過昨日的教程各位讀者已經可以獨自完成
這方法,不過還不熟的讀者可以參考我的方法實作,在此筆者先用一個list來存放使用者資料,但是重新啟動伺服器後所有資料就不存在,不過沒關係,目前先專注在api開發,30日教程內筆者會帶大家如何搭配資料庫,所以先以下列方式來實作:get
from flask_restful import Resource
users = []
class User (Resource):
def get(self, name):
find = [item for item in users if item['name'] == name]
if len(find) == 0:
return {
'message': 'username not exist!'
}, 403
user = find[0]
if not user:
return {
'message': 'username not exist!'
}, 403
return {
'message': '',
'user': user
}
def post(self, name):
pass
def put(self, name):
pass
def delete(self, name):
pass
透過list comprehension找到name相同的資料並且返回該筆資料,待之後介紹與db介接之時再調整此程序。就這樣Resource的get部分實作完成了。
使用POSTMAN
使用後相信大家應該都找不到對應
的資料,雖然應用程序沒有故障,但是大家收到的響應應該如下圖所示:name
這時先設定些初始資料來驗證
加以調整如下:get
`方法,此時我們再將上述
`user.py
from flask_restful import Resource
users = [{
'name': 'kirai',
}]
class User (Resource):
def get(self, name):
find = [item for item in users if item['name'] == name]
if len(find) == 0:
return {
'message': 'username not exist!'
}, 403
user = find[0]
if not user:
return {
'message': 'username not exist!'
}, 403
return {
'message': '',
'user': user
}
def post(self, name):
pass
def put(self, name):
pass
def delete(self, name):
pass
如此應該可以找到一筆資料,所以在請求一次應該能看到以下響應:
實作DELETE
相信實作完get後很多讀者已經知道如何實作delete,如果還沒想法的讀者也別難過繼續看下列例子,想想自己哪裡還不熟的。
from flask_restful import Resource
users = [{
'name': 'kirai',
}]
class User (Resource):
def get(self, name):
find = [item for item in users if item['name'] == name]
if len(find) == 0:
return {
'message': 'username not exist!'
}, 403
user = find[0]
if not user:
return {
'message': 'username not exist!'
}, 403
return {
'message': '',
'user': user
}
def post(self, name):
pass
def put(self, name):
pass
def delete(self, name):
global users
users = [item for item in users if item['name'] != name]
return {
'message': 'Delete done!'
}
處理完成後就準備POSTMAN伺候了,首先選定目標url如下圖:
相信提交請求之後會收到下列響應:
但是真的刪除了嗎?這時再提交一次GET的請求,並確認響應如下:
小結
今日完成CRUD的R及D明日繼續C跟U,在處理C跟U時會介紹如何處理請求傳輸的參數以及POSTMAN如何傳遞參數,敬請期待。
您好,關於postman相關圖檔都無法顯示,請問能提供嗎?
謝謝
感謝你的通知已更新
版主您好,我在執行時遇到no module named “resources.user”
查看PACKAGE CONTENTS後發現只有, client manager resource
想請問該如何處理呢? 謝謝
resource.user在我的範例中是resource這個資料夾的user.py這檔案,你可以檢查你的資料夾是否是resources,還是是像我一樣用resource