Flask-RESTful 是一個 Flask 擴展,用于快速構建 RESTful API。以下是一個簡單 Flask-RESTful 的使用實例:
首先,確保你安裝了 Flask-RESTful。如果沒有,可以使用 pip 來進行安裝:
bash
Copy code
pip install flask-restful
接著,我們創建一個基礎的 Flask-RESTful 應用:
python
Copy code
from flask import Flask
from flask_restful import Api, Resource
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)
這個應用只有一個可用的端點('/'),當進行 GET 請求時,會返回 JSON 數據:{'hello': 'world'}。
在 Flask-RESTful 中,每個資源都為一個類,這個類繼承自 flask_restful.Resource。每個 HTTP 方法(如 GET,POST,PUT 等)都由對應的類方法來處理。在這個例子中,我們只定義了 get 方法,所以對于 / 的 GET 請求都會執行 get 方法并返回 {'hello': 'world'}。
api.add_resource() 方法用來將具體的路由(如 '/')綁定到相應的 Resource 類(如 'HelloWorld')。
這是一個起始例子,對于更復雜的使用,你可能需要加入數據解析,錯誤處理,身份驗證,加入數據庫等功能。
## 身份驗證
Flask-RESTful 并沒有直接提供身份驗證功能。如果你想使用身份驗證,你可以結合 Flask-Login 或者其它的 Flask 身份驗證擴展一并使用。
這里是一個使用 Flask-HTTPAuth 庫進行 HTTP Basic 認證的基本示例:
首先,確保你已經安裝了 Flask-HTTPAuth。如果沒有,可以使用 pip 來安裝:
sh
Copy code
pip install flask-httpauth
接著,我們在 Flask-RESTful 的基礎上添加 Basic 認證:
python
Copy code
from flask import Flask
from flask_restful import Api, Resource
from flask_httpauth import HTTPBasicAuth
app = Flask(__name__)
api = Api(app)
auth = HTTPBasicAuth()
USER_DATA = {
"admin": "supersecret"
}
@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 {"meaning_of_life": 42}
api.add_resource(PrivateResource, '/private')
if __name__ == '__main__':
app.run(debug=True)
在這個例子中,我們使用 flask_httpauth 提供的 HTTPBasicAuth 類創建了一個 auth 對象。我們使用 @auth.verify_password 裝飾器來定義一個函數,這個函數會在每次請求時被調用,用來驗證用戶的用戶名和密碼。
然后我們定義了一個 PrivateResource 類,通過 @auth.login_required 裝飾器來保護它的 get 方法。現在,只有當被驗證的用戶名和密碼正確時,get 方法才會返回結果。否則,服務器會返回 401 錯誤。
注意這只是一個簡單的示例,并不應該在生產環境中使用,因為它將密碼存儲在內存中,并且沒有對傳輸的密碼進行加密。在實際使用中,你應該使用安全的方式來處理和存儲密碼,如哈希和加鹽等。同時,為了保護傳輸的密碼,你應該使用 HTTPS。
```
from flask import Flask
from flask_restful import Api, Resource
from flask_httpauth import HTTPBasicAuth
app = Flask(__name__)
api = Api(app)
auth = HTTPBasicAuth()
USER_DATA = {
"admin": "password"
}
@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 {'hello': 'world'}
api.add_resource(PrivateResource, '/private')
if __name__ == '__main__':
app.run(debug=True)
```
- 前言
- 1.入門篇
- Python介紹
- 安裝與使用
- Python開發利器之VS Code
- 模塊安裝
- 命令行
- 一次Python無法安裝模塊的問題探索與解決之旅
- 命令運行
- Conda
- 下載地址
- 2.基礎篇
- 基礎語法
- 輸入與輸出
- with as的用法
- 注釋
- Python命令行參數
- 編碼
- 變量類型
- 列表遍歷
- 運算符
- 表達式語句
- 條件
- 循環
- 日期和時間
- 函數
- 高級語法
- @符號-裝飾器
- 模塊和包
- name
- init.py
- 錯誤和異常
- 面向對象
- 3.專題篇
- 常用功能
- Python 字符串連接
- python web
- Python CGI編程
- Python OAuth2
- 認證 Flask-HTTPAuth
- 常用命令
- 內置函數
- dir()
- print(f)
- 標準模塊
- sys
- pickle-數據序列化
- os
- IO(輸入輸出)
- 鍵盤輸入
- 文件讀寫
- 測試
- Python測試框架之pytest快速入門
- pytest-bdd快速示例和問題解決
- 基于pytest-bdd的項目目錄結構和命名規范
- python BDD 的相關概念
- Behave介紹和快速示例
- Python BDD之Behave測試報告
- Python BDD 框架比較之 pytest-bdd vs behave
- pytest進階
- Flask + pytest測試
- 參考網址
- pytest-bdd進階
- hehave進階
- 測試路徑
- python + selunium
- HTML 根據多層CSS 查找元素
- 等待執行
- 使用text 查找 span
- pytest如何在控制臺輸出
- 4.問題篇
- pip pip3 及區別
- TypeError: can only concatenate str (not "NoneType") to str
- 5.實戰篇
- matplotlib-繪圖包
- 導入類
- 命名規范
- 模塊查找
- 6.進階篇
- Flask
- Flask介紹
- Flask擴展模塊
- Flask-Login
- 問題
- Jinja2
- Flask-RESTful
- Flask-JWT-Extended
- WSGI
- Flask-SQLAlchemy
- 部署
- Flask VS Django
- Flask Web
- Flask + Vue
- Flask實戰
- Flask 標準目錄結構
- Blueprints
- 參考
- FastAPI 測試
- https 證書 Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate