在API端点数据验证的时候,可以采用以下几种常见的方法:
使用类似于jsonschema这样的标准模式或Python的schema库进行数据验证。
手动编写验证函数进行验证。这种方法需要开发人员手动编写验证函数,并在API端点验证输入数据。以下是一个基于Flask的示例:
from flask import Flask, request
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
def validate_input_data(data_dict):
valid_keys = set(['name', 'age'])
keys = set(data_dict.keys())
if not keys.issubset(valid_keys):
return False
if not isinstance(data_dict['name'], str):
return False
if not isinstance(data_dict['age'], int):
return False
return True
class MyResource(Resource):
def post(self):
input_data = request.get_json()
if not validate_input_data(input_data):
return {'error': 'invalid input data'}, 400
# continue with normal logic
...
return {'data': 'success'}, 200
api.add_resource(MyResource, '/my_resource')
from marshmallow import Schema, fields, validate
from flask import Flask, request
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
class MySchema(Schema):
name = fields.Str(required=True)
age = fields.Int(required=True, validate=validate.Range(0, 200))
my_schema = MySchema()
class MyResource(Resource):
def post(self):
input_data = request.get_json()
validated_data, errors = my_schema.load(input_data)
if errors:
return {'error': 'invalid input data', 'errors': errors}, 400
# continue with normal logic
...
return {'data': 'success'}, 200
api.add_resource(MyResource