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