RESTful API 在現代開發中至關重要,它允許不同的系統以高效且可擴展的方式進行通訊。 Python 及其 Flask 框架提供了一種簡單且強大的方法來建立 API。在本指南中,我們將探索如何使用 Flask 建立 RESTful API,涵蓋從基礎知識到 HTTP 用戶端的身份驗證和使用的所有內容。
在開始編寫程式碼之前,了解什麼是 RESTful API 非常重要。 API(應用程式介面)是一組允許一個軟體與另一個軟體通訊的規則。 REST(表達性狀態傳輸) 樣式定義了 API 必須遵循的一組原則:
現在我們將建立一個簡單的 API 來管理使用者清單。該 API 將允許您新增、編輯、檢視和刪除使用者。
首先,確保你已經安裝了 Flask。如果沒有,您可以使用 pip 安裝:
pip install Flask
我們的專案將具有以下結構:
/api_flask │ ├── app.py └── requirements.txt
在 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'} ]
現在,讓我們為查看、新增、更新和刪除使用者建立端點。
我們將使用GET方法列出所有使用者:
@app.route('/users', methods=['GET']) def get_users(): return jsonify(users), 200
我們將使用 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
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
這裡我們使用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
我們使用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
現在,只需執行我們的應用程式:
if __name__ == '__main__': app.run(debug=True)
運行app.py文件,我們的API將在http://127.0.0.1:5000/users可用。
要為我們的 API 添加一層安全性,我們可以使用 JWT(JSON Web 令牌)。使用 JWT,我們可以確保只有經過身份驗證的使用者才能存取某些端點。
安裝所需的擴充:
pip install Flask-JWT-Extended
更新您的 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 令牌來驗證使用者身分。
要使用 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中文網其他相關文章!