我們很常遇到一個問題:當我們做了一個不錯的應用,但卻必須在命令列裡面執行。這對於一般用戶來說極為不便,因此,出現了所謂的API(應用程式介面)。 而在python上,我們有QT等資源庫可以做桌面軟體,但那必須先連入微電腦中遠端使用。這時候,一個不錯的選擇就是使用web-API,將微電腦作為一個伺服器,透過區網訪問頁面。 而這時能幫助我們的一個好選擇就是Flask,它並非屬於樹莓派專屬的方法,而是python的一個網頁框架。不過,在開始學習Flask之前,我們要先知道Flask是一種RESTful的網頁API設計工具--那這個RESTful是什麼呢? REST 是 Representational State Transfer 的縮寫,可譯為「具象狀態傳輸」。由 Roy Fielding 博士在 2000 年的博士論文中所提出。他同時也是 HTTP 規範的主要作者之一。符合 REST 風格的網站架構可以稱為 RESTful。 REST 是一種軟體架構風格(並非標準),目的是幫助在世界各地不同軟體、程式在網際網路中能夠互相傳遞訊息。每一個網頁都可視為一個資源提供使用者使用,而你可以透過 URL--也就是這些資源的網址,來取得這些資源並在你的瀏覽器上使用。 REST的優點 * 可更高效利用快取來提高回應速度 * 通訊本身的無狀態性可以讓不同的伺服器的處理一系列請求中的不同請求,提高伺服器的擴充性 * 瀏覽器即可作為客戶端,簡化軟體需求 * 相對於其他疊加在HTTP協定之上的機制,REST的軟體相依性更小 * 不需要額外的資源發現機制 * 在軟體技術演進中的長期的相容性更好 Flask是一種利用路由定義對應函式的函式庫,這使得他很適合以RESTful風格開發: ```python from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run() ``` 像上述程式,定義了當訪問這個IP後會回傳helloworld這個字串,與前述的RESTful風格相符(定義了一個URL、回傳一資源)。通常這邊回傳的會有字串、網頁等等,而搭配各種原本用於網路通訊的方法和前端的JS與CSS後,就可以構成相當豐富的互動式網頁。