只允许预期的领域?

Only allow expected fields?

我的模型需要两个字段,我使用该模型验证我的端点:

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):

我如何:

  1. 如果存在除指定的两个之外的密钥,则引发验证错误
  2. 如果两个键都不存在,但一次只需要一个,则引发验证错误

Raise a validation error if a key besides the two specified is present

目前,flask-restx 不允许开箱即用。以下 PR 应添加该功能。即使是现在,您也可以通过创建自定义模型 class 并提出更改建议来尝试将 PR 应用到您的代码中。

Raise a validation error if neither of the keys are present, but only require one at a time

我想最简单的方法是直接使用 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']}]
})

遗憾的是,这仅适用于验证输入数据,不适用于封送响应。