網站首頁 編程語言 正文
python框架有很多,例如:Flask,Django,FastAPI 等。本文將使用 Flask 來編寫 API 接口。
安裝Flask
首先,您需要安裝 Flask:
pip install flask
寫主程序
接下來,我們可以創建一個名為 app.py 的文件,在其中編寫 Flask 應用程序代碼:
from flask import Flask, request
app = Flask(__name__)
@app.route('/api', methods=['GET'])
def api():
? ? name = request.args.get('name')
? ? if name:
? ? ? ? return "Hello, " + name
? ? else:
? ? ? ? return "Hello, World!"
if __name__ == '__main__':
? ? app.run(debug=True)
運行代碼
python app.py
在瀏覽器中訪問 http://localhost:5000/api,應該會返回 “Hello, World!”。
如果向該 URL 添加參數,例如 http://localhost:5000/api?name=YourName,則會返回 “Hello, YourName”。
我們還可以給它添加一個簡單的token驗證
以下代碼來給 API 接口添加一個簡單的 token 驗證:
from flask import Flask, request
app = Flask(__name__)
@app.route('/api', methods=['GET'])
def api():
? ? token = request.args.get('token')
? ? if token != 'secret_token':
? ? ? ? return "Invalid token", 401
? ? name = request.args.get('name')
? ? if name:
? ? ? ? return "Hello, " + name
? ? else:
? ? ? ? return "Hello, World!"
if __name__ == '__main__':
? ? app.run(debug=True)
在上面的代碼中,我們添加了一個 token 參數,并在該參數不為 secret_token 時返回一個 “Invalid token” 的錯誤響應(HTTP 狀態代碼 401)。
在實際生產環境中,應該使用更強大的身份驗證方法,而不是僅僅使用簡單的 token,但在本例中可以作為一個簡單的示例。
在生產環境中,您應該使用更復雜的身份驗證方法,例如:OAuth2,JWT 等。
在使用 Flask 的情況下,您可以使用第三方庫,例如 Flask-OAuthlib 或 Flask-JWT-Extended 來實現身份驗證。
下面是使用 Flask-JWT-Extended 實現身份驗證的示例代碼:
from flask import Flask, request
from flask_jwt_extended import (
? ? JWTManager, jwt_required, create_access_token,
? ? get_jwt_identity
)
app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'secret-key'
jwt = JWTManager(app)
@app.route('/login', methods=['POST'])
def login():
? ? username = request.json.get('username', None)
? ? password = request.json.get('password', None)
? ? if username != 'test' or password != 'test':
? ? ? ? return {'message': 'Bad username or password'}, 401
? ? # identity is a simple string, like a username
? ? access_token = create_access_token(identity=username)
? ? return {'access_token': access_token}, 200
@app.route('/api', methods=['GET'])
@jwt_required
def api():
? ? current_user = get_jwt_identity()
? ? return "Hello, " + current_user
if __name__ == '__main__':
? ? app.run(debug=True)
在上面的代碼中,我們定義了兩個路由:/login 和 /api。在 /login 中,我們檢查用戶名和密碼,如果正確,則創建一個 JWT 訪問令牌并將其返回給用戶。在 /api 中,我們使用 jwt_required 裝飾器來確保該 API 只能被擁有 JWT 令牌的用戶訪問。
在實際生產環境中,應該使用更復雜的身份驗證方法,例如:OAuth2,JWT 等。另外,還需要仔細考慮 JWT 秘密密鑰的安全性,以防止任何惡意用戶恢復或篡改 JWT 令牌。
為了確保身份驗證過程的安全性,還應該在客戶端使用 HTTPS 安全套接字層 (SSL/TLS) 連接到 API 接口,以防止數據在網絡中被竊取。
請注意,這僅是一個簡單的 JWT 身份驗證示例,在生產環境中,可能需要更復雜的驗證方法。因此,請確保在使用 JWT 或任何其他身份驗證方法之前,完全了解其安全性,以確保你的 API 接口不會受到攻擊。
原文鏈接:https://blog.csdn.net/qq_39653624/article/details/128991400
相關推薦
- 2022-12-07 C++AVL樹4種旋轉詳講(左單旋、右單旋、左右雙旋、右左雙旋)_C 語言
- 2022-03-30 Android中圖片占用內存的深入分析_Android
- 2022-06-25 JQuery選擇器用法詳解_jquery
- 2022-10-07 Android實現點擊圖片上傳SQLite數據庫_Android
- 2022-09-21 Android?Flutter繪制有趣的?loading加載動畫_Android
- 2023-07-07 TP6的服務在自定義composer包中如何使用
- 2022-07-27 shell腳本中一鍵部署zookeeper集群服務的方法_linux shell
- 2022-04-20 .NET?6新特性試用Timer類之PeriodicTimer?_ASP.NET
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支