什么是 REST API?

REST API(Representational State Transfer API)是一種基于 REST 架構風格的應用程序接口,允許不同的應用程序之間進行交互。它是當前微服務架構中最常用的通信方式之一。通過 REST API,您可以實現數據的獲取、發送以及 CRUD(創建、讀取、更新、刪除)操作。

REST 架構的主要特點包括:


什么是 Flask 框架?

Flask 是一個用 Python 編寫的微型 Web 框架,具有以下特點:

為什么選擇 Flask?


創建您的第一個 REST API

讓我們通過一個簡單的示例來創建一個 "Hello World" API。以下是實現步驟:

安裝 Flask 和 Flask-Restful

使用以下命令安裝所需的庫:

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-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)

使用 Flask REST API 處理 HTTP 請求

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 REST 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

如何使用基本身份驗證保護 Flask API?

為了保護 API 的安全性,可以使用 Flask-HTTPAuth 實現基本身份驗證。以下是一個示例:

安裝 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)

如何為 REST API 編寫單元測試?

單元測試是確保代碼質量的重要步驟。以下是一個簡單的單元測試示例:

示例代碼

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/

上一篇:

使用C語言創建REST API的完整指南

下一篇:

使用Python入門REST API
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費