如何使用 Flask 和 Python 建立 RESTful API
RESTful API 在現代開發中至關重要,它允許不同的系統以高效且可擴展的方式進行通訊。 Python 及其 Flask 框架提供了一種簡單且強大的方法來建立 API。在本指南中,我們將探索如何使用 Flask 建立 RESTful API,涵蓋從基礎知識到 HTTP 用戶端的身份驗證和使用的所有內容。
什麼是 RESTful API?
在開始編寫程式碼之前,了解什麼是 RESTful API 非常重要。 API(應用程式介面)是一組允許一個軟體與另一個軟體通訊的規則。 REST(表達性狀態傳輸) 樣式定義了 API 必須遵循的一組原則:
- 客戶端-伺服器:客戶端(使用API)和伺服器(提供資料)之間的分離。
- 無狀態:客戶端發出的每個請求都必須包含伺服器處理所需的所有資訊。
- 可快取:可以快取 API 回應以提高效能。
- 統一介面:客戶端和伺服器之間的通訊必須以標準化的方式完成,使用 HTTP 方法,例如 GET、POST、PUT 和 DELETE。
使用 Flask 建立 RESTful API
現在我們將建立一個簡單的 API 來管理使用者清單。該 API 將允許您新增、編輯、檢視和刪除使用者。
1.安裝Flask
首先,確保你已經安裝了 Flask。如果沒有,您可以使用 pip 安裝:
pip install Flask
2. 項目結構
我們的專案將具有以下結構:
/api_flask │ ├── app.py └── requirements.txt
3. 配置 Flask
在 app.py 檔案中,我們首先導入必要的函式庫並配置我們的 Flask 應用程式:
from flask import Flask, jsonify, request app = Flask(__name__) # Dados simulados users = [ {'id': 1, 'name': 'Alice', 'email': 'alice@example.com'}, {'id': 2, 'name': 'Bob', 'email': 'bob@example.com'} ]
4. 建立端點
現在,讓我們為查看、新增、更新和刪除使用者建立端點。
4.1.列出使用者的端點
我們將使用GET方法列出所有使用者:
@app.route('/users', methods=['GET']) def get_users(): return jsonify(users), 200
4.2.取得特定用戶的端點
我們將使用 GET 方法和使用者 ID 來取得特定使用者的詳細資訊:
@app.route('/users/<int:user_id>', methods=['GET']) def get_user(user_id): user = next((user for user in users if user['id'] == user_id), None) if user: return jsonify(user), 200 else: return jsonify({'message': 'User not found'}), 404
4.3.建立新用戶的端點
POST 方法將用於新增使用者。客戶端將以 JSON 格式傳送資料。
@app.route('/users', methods=['POST']) def create_user(): data = request.get_json() new_user = { 'id': len(users) + 1, 'name': data['name'], 'email': data['email'] } users.append(new_user) return jsonify(new_user), 201
4.4.更新用戶的端點
這裡我們使用PUT方法來更新現有使用者的資料:
@app.route('/users/<int:user_id>', methods=['PUT']) def update_user(user_id): data = request.get_json() user = next((user for user in users if user['id'] == user_id), None) if user: user['name'] = data['name'] user['email'] = data['email'] return jsonify(user), 200 else: return jsonify({'message': 'User not found'}), 404
4.5.刪除用戶的端點
我們使用DELETE方法來刪除使用者:
@app.route('/users/<int:user_id>', methods=['DELETE']) def delete_user(user_id): global users users = [user for user in users if user['id'] != user_id] return jsonify({'message': 'User deleted'}), 200
5. 運行API
現在,只需執行我們的應用程式:
if __name__ == '__main__': app.run(debug=True)
運行app.py文件,我們的API將在http://127.0.0.1:5000/users可用。
6. 使用 Flask 進行身份驗證
要為我們的 API 添加一層安全性,我們可以使用 JWT(JSON Web 令牌)。使用 JWT,我們可以確保只有經過身份驗證的使用者才能存取某些端點。
6.1.安裝 Flask-JWT-Extend
安裝所需的擴充:
pip install Flask-JWT-Extended
6.2.配置 JWT
更新您的 app.py 檔案以包含 JWT 驗證:
from flask_jwt_extended import JWTManager, create_access_token, jwt_required app.config['JWT_SECRET_KEY'] = 'your-secret-key' # Troque pela sua chave secreta jwt = JWTManager(app) # Login para obter o token @app.route('/login', methods=['POST']) def login(): data = request.get_json() if data['username'] == 'admin' and data['password'] == 'admin': access_token = create_access_token(identity={'username': 'admin'}) return jsonify(access_token=access_token), 200 else: return jsonify({'message': 'Invalid credentials'}), 401 # Exemplo de endpoint protegido @app.route('/protected', methods=['GET']) @jwt_required() def protected(): return jsonify({'message': 'Access granted to protected endpoint'}), 200
現在,當存取 /protected 端點時,需要在請求標頭中傳送 JWT 令牌來驗證使用者身分。
7. 透過 HTTP 用戶端使用 API
要使用 API,我們可以使用 Postman 等工具或 Python 中的 requests 等函式庫。
如何使用請求使用 API 的範例:
import requests # Consumindo o endpoint de listagem de usuários response = requests.get('http://127.0.0.1:5000/users') print(response.json())
結論
使用 Flask 建立 RESTful API 既簡單又靈活。 Flask 提供了一個簡約的框架,可以擴充以包含身份驗證、錯誤處理和其他安全層等功能。透過遵循 REST 原則和良好的開發實踐,可以使用 Python 建立高效且可擴展的 API。
現在您可以使用 Flask 建立自己的 RESTful API,根據您的需求和要求進行自訂。
以上是如何使用 Flask 和 Python 建立 RESTful API的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。
