flask - 只允许预期的字段?
问题描述
我的模型需要两个字段,我使用该模型验证我的端点:
config_model = api.model('Configuration', {
'cuvettes_count': fields.Integer,
'pipettes_count': fields.Integer
})
# later
class ConfigEndpoint(Resource):
@config_endpoint.expect(config_model, validate=True)
def put(self):
我如何能:
- 如果存在指定的两个键之外的键,则引发验证错误
- 如果两个键都不存在,则引发验证错误,但一次只需要一个
解决方案
如果存在指定的两个键之外的键,则引发验证错误
目前,flask-restx 不允许它开箱即用。以下PR应添加该功能。即使现在,您也可以通过创建带有建议更改的自定义模型类来尝试将 PR 应用于您的代码。
如果两个键都不存在,则引发验证错误,但一次只需要一个
我想最简单的方法是直接使用 jsonschema,即类似于下面的
config_model = api.schema_model('Configuration', {
'type': 'object',
'properties': {
'cuvettes_count': {'type': 'integer'},
'pipettes_count': {'type': 'integer'}
},
'anyOf': [{'required': ['cuvettes_count']}, {'required': ['pipettes_count']}]
})
不幸的是,这仅适用于验证输入数据,不适用于编组响应。
推荐阅读
- php - 如何使用日期范围从表中查询多个详细信息来获取数据?
- node.js - 如何将表单值发送到节点/快递到搜索数据库?
- node.js - Express 5 中间件可以使用 async/await 吗?
- dojo - Dojo 对话框中的 FilteringSelect
- javascript - 字符串限制线JS
- php - 将插入查询覆盖到准备好的语句
- python - 如何自定义登录视图
- sql-server - 子请求返回了几个值
- jmeter - jmeter终极线程组中如何控制频率
- amazon-web-services - 在 AWS S3 中自动设置存储桶策略。如何获取脚本引用的新存储桶名称?