iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0

今天我會介紹甚麼是Flask RESTful以及API的用法。

什麼是API?

API(Application Programming Interface)又稱應用程式介面,是一種軟體間的通訊協定。它就像連接世界各地系統的橋樑,讓資料與服務得以快速、靈活地被存取與分享。

API 定義了軟體元件之間互動的規則和機制,它描述了請求與回應應該如何傳送與接收。這讓不同的軟體系統可以以有組織的方式進行交流,而不需要了解對方的內部實作細節。API可以分為 Web API 和本地API 兩大類。Web API 透過網路進行存取,本地 API 在應用程式內部透過方法呼叫進行互動。

API 的重要性體現在:

  1. 資料分享:企業可以透過開放 API 將資料提供給合作夥伴或第三方開發者,創造更多應用與服務。
  2. 服務整合:不同的應用可以呼叫 API 來整合其他應用的功能,如支付、登入等服務。
  3. 自動化:API 讓軟體系統之間可以自動互動操作,節省時間與資源。這在雲計算、自動化測試等領域很常見。
  4. 提高效率:標準化的 API 簡化了開發過程,提高了軟體開發效率。

例如顧客在點餐App上選擇菜單,App透過呼叫餐廳的API,將訂單資訊傳送給餐廳,餐廳系統接收到訂單後,呼叫廚房系統的API,提交烹調任務。在這裡,App和餐廳系統之間的API使兩者能夠互動,實現訂單傳遞。

什麼是RESTful API?

Flask RESTful API是使用Flask這個Python框架來建立RESTful API的一種方式。
RESTful API是一種API設計風格,它利用HTTP請求方法表示不同的操作,並使用URL定位資源。

  • RESTful架構具有以下特點:
    • 資源導向(Resource-oriented): API圍繞資源(Resources)進行設計,資源可以是數據庫中的表、文件等實體。
    • 表現層狀態轉移(Representational State Transfer):客戶端和服務器之間資源的狀態通過表示層進行傳遞,而表示層通常是JSON或XML格式。
    • 統一接口(Uniform Interface):使用統一的接口如HTTP方法操作資源,最主要的是GET/POST/PUT/DELETE。
    • 無狀態(Stateless):服務器不保存客戶端請求的上下文信息。

Flask框架提供了開箱即用的功能來幫助構建RESTful API。Flask RESTful模塊可以快速為資源建立接口。

  • 使用Flask RESTful的優點包括:
    • 遵循REST風格,提供了資源類和請求解析器來快速實現。
    • 自動地將Python對象轉換為JSON格式。
    • 基於Werkzeug和Flask路由,具備彈性的URL設計。
    • 與其他Flask插件整合,可擴展性強。
    • 提供了流程控制和驗證機制。

總體來說,Flask RESTful為構建REST API提供了簡單而彈性的方法,使開發效率大大提高。它是建立Python RESTful API的流行選擇之一。

開始使用Flask RESTful

首先不免俗地當然還是要先安裝啦

pip install flask-restful

安裝好後就可以來設定並初始化Flask RESTful了。

from flask import Flask
from flask_restful import Api, Resource

app = Flask(__name__)
api = Api(app)

if __name__ == '__main__':
    app.run(debug=True)

這個示例創建了一個基本的 Flask 應用程序,然後初始化了 Flask-RESTful,並將其關聯到 Flask 應用程序上。

Flask RESTful基礎

在 Flask RESTful 中,API 資源是您的應用程序中的核心元素。它們代表了您想要在 API 中提供的數據和功能。通常每個資源都是一個 Python 類,並定義了支持的 HTTP 方法和相應的操作。
下面會先用簡單的結構給大家看,之後幾天會補充完整地來解釋

from flask_restful import Resource

class TaskResource(Resource):
    def get(self, task_id):
        # 根據 task_id 返回特定任務的信息
        pass

    def put(self, task_id):
        # 更新特定任務的信息
        pass

    def delete(self, task_id):
        # 刪除特定任務
        pass

在這個示例中,我們定義了一個名為TaskResource的 API 資源,並為它定義了三個方法:get、put 和 delete。這些方法對應於 HTTP 方法 GET、PUT 和 DELETE,它們用於處理資源的不同操作。

明天會接著今天的介紹繼續補充


上一篇
[Day 26]Flask Login(2)
下一篇
[Day 28]Flask RESTful API(2)
系列文
從開始到放棄的Flask30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言