第十屆鐵人賽 flask-restful DAY15-搞懂如何建立Resource

flask-restful起手式

在經過flask基本教程、restful以及POSTMAN的教程後終於要準備進入flask-restful的教程了,今日的教程教授大家如何使用flask-restful、如何配置程式碼以及透過POSTMAN發出第一個請求。

安裝flask-restful

在使用之前不外乎就是安裝函式庫了,相信經過之前教程各位讀者應該有想法如何安裝,若是沒有想法請看以下例子:

$ pip install flask-restful

相信輸入上述指令的大家應該可以順利安裝完成flask-restful。

第一個resource

在完成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是否安裝需安裝的套件。

第一個POSTMAN請求

POSTMAN 第一個請求

首先先來看看我們請求的url:

眼尖的讀者會覺得很奇怪,怎麼會有{url}這種網址呢,這就是要介紹POSTMAN強大功能之一的環境變數,當讀者們點擊眼睛的按鈕會出現下面內容:

POSTMAN 環境設定視窗

就是在這邊我們定義了{url}`是甚麼,所以當我們想要請求到production的伺服器時則不需要改所有的請求集合,只要修改環境變數的內容即可,這裡眼尖的讀者也看到`INITIAL VALUE``CURRENT VALUE`,至於這兩個內容有何差異,在此筆者先賣個關子,之後會再接著介紹POSTMAN其他強大功能是在加以說明。最後當按下`SEND讀者們應該會看到以下內容。

POSTMAN 第一個回應

這就是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的請求,敬請期待。

在〈第十屆鐵人賽 flask-restful DAY15-搞懂如何建立Resource〉中有 2 則留言

  1. 你好, “POSTMAN 第一個請求,環境設定視窗” 這部分的圖檔都無法顯示,不清楚怎麼設定請求,及請求的url.能否提供? 謝謝.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *