python flask 接口参数校验
时间: 2023-10-12 21:13:45 浏览: 48
在 Flask 中,可以使用 Flask-RESTful 或 Flask-Inputs 等第三方库来实现接口参数校验。
Flask-RESTful:
Flask-RESTful 提供了 RequestParser 类来进行参数解析和校验,示例代码如下:
```python
from flask_restful import reqparse, abort, Api, Resource
# 初始化 RequestParser 对象
parser = reqparse.RequestParser()
# 添加参数校验规则
parser.add_argument('name', type=str, required=True, help='Name cannot be blank')
parser.add_argument('age', type=int, required=True, help='Age cannot be blank')
class User(Resource):
def post(self):
# 解析参数
args = parser.parse_args()
# 校验参数
if args['name'] == 'Tom':
abort(400, message='Name already exists')
# 处理业务逻辑
user = {'name': args['name'], 'age': args['age']}
return user, 201
# 注册路由
api = Api(app)
api.add_resource(User, '/user')
```
上述代码中,我们创建了一个名为 User 的资源类,其中 post 方法用于处理 POST 请求。在 post 方法中,我们首先使用 RequestParser 对象解析参数,然后校验参数是否符合要求,最后处理业务逻辑并返回结果。
Flask-Inputs:
Flask-Inputs 提供了多种参数校验器,包括字符串长度、数字范围、正则表达式等,示例代码如下:
```python
from flask import Flask, jsonify
from flask_inputs import Inputs
from flask_inputs.validators import JsonSchema
# 初始化 Inputs 对象
inputs = Inputs()
# 添加参数校验规则
schema = {
'type': 'object',
'properties': {
'name': {'type': 'string', 'minLength': 1},
'age': {'type': 'integer', 'minimum': 0, 'maximum': 200}
},
'required': ['name', 'age']
}
inputs.add('json', JsonSchema(schema=schema))
@app.route('/user', methods=['POST'])
def create_user():
# 校验参数
if inputs.validate():
# 处理业务逻辑
user = {'name': inputs.json['name'], 'age': inputs.json['age']}
return jsonify(user), 201
else:
return jsonify(errors=inputs.errors), 400
```
上述代码中,我们创建了一个名为 create_user 的路由,其中使用 Inputs 对象添加了参数校验规则,然后在路由处理函数中校验参数并处理业务逻辑。如果参数校验失败,我们将返回 400 错误和错误信息。