目錄
一、RESTful 概述
二、Python 中的 RESTful
三、Flask RESTful API 範例講解
1)Flask-RESTful 庫講解
2)Flask-RESTful 庫安裝
3)RESTful 範例講解
首頁 後端開發 Python教學 Python Flask RESTful怎麼使用

Python Flask RESTful怎麼使用

Apr 29, 2023 pm 07:49 PM
python restful flask

一、RESTful 概述

REST(Representational State Transfer)風格是一種資源導向的Web 應用程式設計風格,它遵循一些設計原則,使得Web 應用程式具有良好的可讀性、可擴充性和可維護性。下面我們來詳細解釋一下RESTful 風格的各個方面:

  • 資源標識符:在RESTful 風格中,每個資源都有一個唯一的標識符,通常是一個 URL(Uniform Resource Locator)。 URL 用於標識資源的位置,使得用戶端可以使用 HTTP 協定進行存取。例如,一個簡單的URL 可以是:http://example.com/products/123,其中「products」表示資源類型,「123」表示資源標識符。

  • 表示層:資源可以以不同的格式表示,例如 JSONXML#,HTML  等。客戶端可以根據需要選擇適當的表示形式進行互動。例如,一個 RESTful API 可以傳回 JSON 格式的數據,以便用戶端可以更輕鬆地解析和處理資料。

  • 自描述訊息:每個訊息都應該包含足夠的信息,以描述如何處理該訊息。例如,HTTP 回應應該包含狀態碼、回應頭和回應正文等訊息,以便客戶端可以理解回應的含義。

  • 無狀態通信RESTful 風格的設計強調無狀態通信,這意味著每個請求都應該包含所有必要的信息以處理該請求,而不依賴先前的請求。這可以使得 Web 應用程式更加簡單和可擴展,因為伺服器不需要保留任何狀態資訊。

  • 統一介面:所有資源應該透過相同的介面來存取。這表示客戶端可以使用相同的HTTP 方法(如 GETPOSTPUTDELETE 等)來操作不同類型的資源。這使得 API 更加簡單和一致,並且更容易被其他開發者理解和使用。

總之,RESTful 風格的設計使得 Web 應用程式更加靈活、可擴展且易於維護,是一種現代化的 Web 應用程式設計方式。

二、Python 中的 RESTful

Python 可以用於實作 RESTful 風格的 Web 應用程序,通常使用一些 Web 框架來簡化開發流程。以下是一些常見的Python Web 框架:

  • FlaskFlask 是一個簡單、輕量級的Web 框架,可以用來建立RESTful 風格的Web 應用程式。它使用 Python 的裝飾器語法來定義 HTTP 路由,使得編寫 Web 應用程式變得簡單且直觀。 Flask 還提供了擴展機制,讓開發人員可以輕鬆地添加新的功能,例如資料庫存取、表單驗證等。

  • DjangoDjango# 是一個強大、全面的 Web 框架,可用於建立複雜的 Web 應用程式。它提供了許多內建功能,例如 ORM(物件關聯映射)、表單驗證、身份驗證等,可以使開發人員更快地建立 Web 應用程式。 Django 也支援 RESTful 風格的 Web 應用程式開發,可使用第三方函式庫 Django REST framework 來實現。

  • BottleBottle 是一個輕量級的Web 框架,它使用Python 的裝飾語法來定義HTTP 路由,可以快速建立RESTful 風格的Web 應用程式。 Bottle 還包含了一些有用的功能,例如模板引擎、資料庫存取、靜態文件處理等。

  • PyramidPyramid 是一個靈活、高度可自訂的Web 框架,可用於建立各種類型的Web 應用程序,包括RESTful 風格的Web 應用程式。 Pyramid 提供了許多擴充機制,讓開發人員可以輕鬆地添加新的功能,例如資料庫存取、表單驗證、身份驗證等。

以上框架都支援 RESTful 風格的 Web 應用程式開發,並且都具有各自的優缺點,開發人員可以根據自己的需求選擇合適的框架。

三、Flask RESTful API 範例講解

1)Flask-RESTful 庫講解

Flask-RESTful 是一個基於Flask 的擴充庫,它提供了一些方便的工具來建立RESTful API。以下是 Flask-RESTful 的一些主要特點和功能:

  • 資源類別:Flask-RESTful 提供了一個 Resource 基底類,可以用來建立資源。 Resource 類別包含了HTTP 方法(GETPOSTPUTDELETE 等)的處理邏輯,並提供了一些方便的方法來處理請求和回應。

  • 請求參數解析:Flask-RESTful 提供了一個 RequestParser 類,用於解析請求參數。 RequestParser 可以自動將查詢參數、表單參數、JSON 參數等解析成 Python 類型,並提供了一些選項來指定參數的類型、預設值、必須存在等限制條件。

  • 回應格式化:Flask-RESTful 提供了一個 marshal_with() 裝飾器,用於格式化回應資料。 marshal_with() 裝飾器可以將 Python 物件轉換成指定的輸出格式(如 JSON、XML 等),並支援指定輸出欄位、欄位類型、巢狀欄位等功能。

  • 路由定義: Flask-RESTful 提供了一個 Api 類,用於定義路由和資源的對應關係。 Api 類別包含了 add_resource()方法,用於將資源類別和 URL 路由綁定。

  • 異常處理:Flask-RESTful 提供了一些異常類,用於處理 HTTP 請求和回應中的錯誤。 Flask-RESTful 的例外類別包括 abortHTTPException 等,可以方便地處理 HTTP 狀態碼錯誤訊息等。

綜上所述,Flask-RESTful 提供了一些方便的工具來簡化 RESTful API 的開發。使用 Flask-RESTful 可以快速地定義資源、解析請求參數、格式化回應資料、定義路由和處理異常等,從而提高開發效率並降低出錯的風險。

2)Flask-RESTful 庫安裝

要安裝 Flask-RESTful 庫,可以使用 pip 指令進行安裝。在終端機中執行以下命令:

pip3 install flask-restful
登入後複製

這將會從 PyPI 上下載 Flask-RESTful 函式庫,並安裝到本機的 Python 環境中。安裝完成後,就可以在程式碼中匯入 flask_restful 模組,使用 Flask-RESTful 提供的功能來建立 RESTful API。

3)RESTful 範例講解

下面是一個簡單的Flask RESTful API 範例,它實作了一個簡單的To-Do List 應用程式:

from flask import Flask, request
from flask_restful import Api, Resource, reqparse, fields, marshal_with
app = Flask(__name__)
api = Api(app)
todos = {}
todo_fields = {
    'id': fields.Integer,
    'task': fields.String,
    'status': fields.Boolean
}
class TodoList(Resource):
    @marshal_with(todo_fields)
    def get(self):
        return todos
    @marshal_with(todo_fields)
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('task', type=str, help='Task is required', required=True)
        args = parser.parse_args()
        todo_id = len(todos) + 1
        todo = {'task': args['task'], 'status': False}
        todos[todo_id] = todo
        return todo, 201
class TodoItem(Resource):
    @marshal_with(todo_fields)
    def get(self, todo_id):
        return todos[todo_id]
    def put(self, todo_id):
        parser = reqparse.RequestParser()
        parser.add_argument('task', type=str)
        parser.add_argument('status', type=bool)
        args = parser.parse_args()
        todo = todos[todo_id]
        if args['task']:
            todo['task'] = args['task']
        if args['status']:
            todo['status'] = args['status']
        return todo
    def delete(self, todo_id):
        del todos[todo_id]
        return '', 204
api.add_resource(TodoList, '/todos')
api.add_resource(TodoItem, &#39;/todos/<int:todo_id>&#39;)
if __name__ == &#39;__main__&#39;:
    app.run(debug=True)
登入後複製

#
# 配置环境变量
export FLASK_APP=restful-test.py
# 启动服务,公开访问需要加上--host=0.0.0.0
python -m flask run --host=0.0.0.0
登入後複製

此範例使用Flask 和Flask-RESTful 庫來實作To-Do List 應用程式的RESTful API。以下是一些重要的程式碼片段的解釋:

  • #定義資源:在範例中,有兩個資源:TodoList 和 TodoItemTodoList 用來處理所有的 To-Do 任務列表,TodoItem 用來處理單一任務。

  • 定義請求參數:在範例中,我們使用 Flask-RESTful 函式庫的 RequestParser 來解析請求參數。我們定義了 'task' 和 'status' 參數,並使用 add_argument() 方法來指定它們的型別和其他限制條件。

  • 定義回應格式:在範例中,我們使用 Flask-RESTful 函式庫的 marshal_with() 裝飾器來定義回應的格式。我們定義了一個名為 todo_fields 的字典,其中包含了 To-Do 任務的 idtask 和 #status 欄位。

  • 定義請求方法:在範例中,我們使用 Flask-RESTful 函式庫的 Resource 類別來定義請求方法。我們實作了 GETPOSTPUT 和 DELETE 方法,用於取得任務清單新增任務更新任務刪除任務

  • 新增路由:在範例中,我們使用 Flask-RESTful 庫的 Api 類別來新增路由。我們使用 add_resource() 方法來將 TodoList 和 TodoItem 類別與對應的 URL 路由綁定。

在執行該範例後,可以透過存取 URL 來使用 To-Do List 應用程式的 RESTful API。例如,要取得所有任務清單,可以使用下列網址:

# GET http://localhost:5000/todos
curl http://localhost:5000/todos
登入後複製

新增一個任務,可以使用下列網址:

# POST http://localhost:5000/todos
curl -XPOST http://localhost:5000/todos -d &#39;task=123&#39;
curl -XPOST http://localhost:5000/todos -d &#39;{"task":"456"}&#39;  --header "Content-Type: application/json"
登入後複製

若要取得單一任務,可以使用下列網址:

# GET http://localhost:5000/todos/1
curl http://localhost:5000/todos/1
登入後複製

更新任務,可以使用下列網址:

# PUT http://localhost:5000/todos/1
curl -XPUT http://localhost:5000/todos/1 -d &#39;{"task":"test"}&#39;  --header "Content-Type: application/json"
# 查看
curl http://localhost:5000/todos/1
登入後複製

刪除任務,可以使用以下網址:

# DELETE http://localhost:5000/todos/1
curl -XDELETE http://localhost:5000/todos/1
登入後複製

Python Flask RESTful怎麼使用

以上是Python Flask RESTful怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

vs code 可以在 Windows 8 中運行嗎 vs code 可以在 Windows 8 中運行嗎 Apr 15, 2025 pm 07:24 PM

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

visual studio code 可以用於 python 嗎 visual studio code 可以用於 python 嗎 Apr 15, 2025 pm 08:18 PM

VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

vscode 擴展是否是惡意的 vscode 擴展是否是惡意的 Apr 15, 2025 pm 07:57 PM

VS Code 擴展存在惡意風險,例如隱藏惡意代碼、利用漏洞、偽裝成合法擴展。識別惡意擴展的方法包括:檢查發布者、閱讀評論、檢查代碼、謹慎安裝。安全措施還包括:安全意識、良好習慣、定期更新和殺毒軟件。

See all articles