
使用NestJS和Prisma構建REST API:身份驗證
REST API(Representational State Transfer API)是一種基于 REST 架構風格的應用程序接口,允許不同的應用程序之間進行交互。它是當前微服務架構中最常用的通信方式之一。通過 REST API,您可以實現數據的獲取、發送以及 CRUD(創建、讀取、更新、刪除)操作。
REST 架構的主要特點包括:
Flask 是一個用 Python 編寫的微型 Web 框架,具有以下特點:
讓我們通過一個簡單的示例來創建一個 "Hello World" API。以下是實現步驟:
使用以下命令安裝所需的庫:
pip install flask flask-restful
創建一個新的 Python 文件,并輸入以下代碼:
from flask import Flask
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
class HelloWorld(Resource):
def get(self):
return {"Hello": "World"}
api.add_resource(HelloWorld, '/')
if __name__ == '__main__':
app.run(debug=True)
運行代碼后,訪問 http://127.0.0.1:5000/
,您將看到以下 JSON 響應:
{"Hello": "World"}
Flask-Restful 是 Flask 的一個擴展,用于簡化 REST API 的開發。它通過定義資源類,將 HTTP 方法(如 GET、POST、PUT、DELETE)映射為類方法,極大地提高了代碼的可讀性和可維護性。
以下是一個簡單的 Flask-Restful 示例:
from flask import Flask
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
class HelloWorld(Resource):
def get(self):
return {"Hello": "World"}
api.add_resource(HelloWorld, '/')
if __name__ == '__main__':
app.run(debug=True)
REST API 的核心是處理 HTTP 請求。以下是一個示例,展示如何在 Flask 中實現 GET、POST 和 DELETE 方法:
from flask import Flask, request
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
data = []
class People(Resource):
def get(self):
return data
def post(self):
name = request.json.get('name')
data.append(name)
return {"message": f"{name} added"}, 201
def delete(self):
name = request.json.get('name')
if name in data:
data.remove(name)
return {"message": f"{name} deleted"}, 200
return {"message": f"{name} not found"}, 404
api.add_resource(People, '/people')
if __name__ == '__main__':
app.run(debug=True)
您可以使用 Postman 或其他 API 測試工具測試上述代碼。
裝飾器是一種函數,用于在不修改原函數的情況下為其添加功能。在 Flask API 中,裝飾器可以用于記錄請求的執行時間、監控 IP 地址等。
以下是一個記錄函數執行時間的裝飾器示例:
import time
from functools import wraps
def timer(func):
@wraps(func)
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"Execution time: {end_time - start_time} seconds")
return result
return wrapper
為了保護 API 的安全性,可以使用 Flask-HTTPAuth 實現基本身份驗證。以下是一個示例:
pip install flask-httpauth
from flask import Flask
from flask_restful import Resource, Api
from flask_httpauth import HTTPBasicAuth
app = Flask(__name__)
api = Api(app)
auth = HTTPBasicAuth()
USER_DATA = {
"admin": "SuperSecretPwd"
}
@auth.verify_password
def verify(username, password):
if not (username and password):
return False
return USER_DATA.get(username) == password
class PrivateResource(Resource):
@auth.login_required
def get(self):
return {"message": "Welcome, authorized user!"}
api.add_resource(PrivateResource, '/private')
if __name__ == '__main__':
app.run(debug=True)
單元測試是確保代碼質量的重要步驟。以下是一個簡單的單元測試示例:
import unittest
from app import app
class FlaskTest(unittest.TestCase):
def test_index(self):
tester = app.test_client(self)
response = tester.get('/')
self.assertEqual(response.status_code, 200)
if __name__ == '__main__':
unittest.main()
通過本文,您學習了如何使用 Flask 和 Flask-Restful 創建 REST API,包括基本的 API 開發、HTTP 請求處理、裝飾器的使用、安全性增強以及單元測試。REST API 是現代應用程序開發的重要組成部分,掌握這些技能將為您的開發工作帶來極大的便利。
原文鏈接: https://www.analyticsvidhya.com/blog/2022/01/rest-api-with-python-and-flask/
使用NestJS和Prisma構建REST API:身份驗證
如何使用 DeepSeek 構建 AI Agent:終極指南
模型壓縮四劍客:量化、剪枝、蒸餾、二值化
Yahoo Finance API – 完整指南
WordPress REST API 內容注入漏洞分析
Transformers Generate 功能介紹
四款AI大模型API價格對比:DeepSeek R1、ChatGPT o3-mini、Grok3、通義千問 Max
四款AI大模型API基礎參數、核心性能的區別:DeepSeek R1、ChatGPT o3-mini、Grok3、通義千問 Max
2025年多模態大模型API基礎參數、核心性能:Deepseek、ChatGPT、文心一言