首頁  >  文章  >  後端開發  >  如何使用 Flask 和 Python 建立 RESTful API

如何使用 Flask 和 Python 建立 RESTful API

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-16 11:38:29237瀏覽

Como Criar APIs RESTful com Flask e Python

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中文網其他相關文章!

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