在經過flask基本教程、restful以及POSTMAN的教程後終於要準備進入flask-restful的教程了,今日的教程教授大家如何使用flask-restful、如何配置程式碼以及透過POSTMAN發出第一個請求。
本文章同步放置於此
在使用之前不外乎就是安裝函式庫了,相信經過之前教程各位讀者應該有想法如何安裝,若是沒有想法請看以下例子:
$ pip install flask-restful
相信輸入上述指令的大家應該可以順利安裝完成flask-restful。
在完成flask-restful安裝後可以開始restful的開發了,今天先簡單介紹大家如何寫一個restful api,所以簡單教學先把所有的內容寫在一個app.py
上面,不過這不是一個好的示範,因為所有的內容都寫在一個檔案要怎麼維護阿。所以後續會介紹flask-restful要如何配置,但各位讀者請先看看以下例子:
from flask import Flask
app = Flask(__name__)
if __name__ == "__main__":
app.run()
相信大家對這例子不陌生吧,這就是最一開始介紹給大家的例子,當然flask-restful也要從這邊出發,所以我們添加一些東西後,就成了下列例子了:
from flask import Flask
from flask_restful import Api
app = Flask(__name__)
api = Api(app)
if __name__ == "__main__":
app.run()
就這樣flask-restful的初始化就完成了,然而儘管如此還沒有辦法提供api給使用者提交請求,所以接下來要做的事就是新增一個resourece,而restful就是以資源為基礎,每一個項目都可以是一個資源,所以我們在添加一個resource在原來的內容之中。
from flask import Flask
from flask_restful import Api
from flask_restful import Resource
class PrintHelloWorld(Resource):
def get(self):
return {
'message': 'Hello Wrold!'
}, 200
app = Flask(__name__)
api = Api(app)
api.add_resource(PrintHelloWorld, "/print_hello_world/")
if __name__ == "__main__":
app.run()
到這裡就有東西可以說明了,這裡我們先import一個Resource
,再來每個項目都源自於Resource
,所以我們建立一個新的項目繼承Resource
如同上述例子PrintHelloWorld,再來我們時做一個簡單的方法get
這也呼應到到時客戶端的請求所需提交的method
,之後在get
內實作當伺服器端收到這method
的請求要做甚麼,以及返還甚麼資訊給客戶端。在我們這例子就簡單返還一個JSON的訊息格式以及status
,最後一個動作就是把新建立的Resource
註冊到flask-restful之中,就是例子內的api.add_resource(PrintHelloWorld, "/print_hello_world/")
這式子,其中第二個參數是將這Resource
綁定到url/print_hello_world/
,第三個參數明天會加以說明,就這樣我們第一個Hello World restful api就完成了,接下來我們看看要怎麼提交請求來呼叫這api,不過在提交請求之前請先用以下指令執行這app.py
。
$ python app.py
如果沒辦法執行請先確定一下virtualenv是否用了,或者pip是否安裝需安裝的套件。
首先先來看看我們請求的url:
眼尖的讀者會覺得很奇怪,怎麼會有{{url}}
這種網址呢,這就是要介紹POSTMAN強大功能之一的環境變數,當讀者們點擊眼睛的按鈕會出現下面內容:
就是在這邊我們定義了{{url}}
是甚麼,所以當我們想要請求到production的伺服器時則不需要改所有的請求集合,只要修改環境變數的內容即可,這裡眼尖的讀者也看到INITIAL VALUE
跟CURRENT VALUE
,至於這兩個內容有何差異,在此筆者先賣個關子,之後會再接著介紹POSTMAN其他強大功能是在加以說明。最後當按下SEND
讀者們應該會看到以下內容。
這就是POSTMAN接收到伺服器返還的status 200以及JSON格式的response。到此就完成我們第一個restful api了。
儘管讀者想要把所有的內容都寫在app.py
也是可以,但是這樣會很難維護,所以這部分告訴大家如何整理flask-restful檔案結構,這裡請大家看看下列內容:
myapi/
__init__.py
app.py # this file contains your app and routes
resources/
__init__.py
foo.py # contains logic for /Foo
bar.py # contains logic for /Bar
common/
__init__.py
util.py # just some common infrastructure
以上是官網提供的檔案結構內容,所以把所有資料寫在一個app.py就到今天為止,明天開始會針對每個Resource
放在resources資料夾之內。還有往後幾天會在新增幾個資料夾,到時候再說明該內容了。
今天教程教授大家如何安裝、建立、測試自己所撰寫的flask-restful api,基本上今日的教程回不斷的載往後的日子出現。明日要教授大家如何撰寫一個GET的請求,敬請期待。