Разрешить только ожидаемые поля?
Моя модель ожидает два поля, и я проверяю свою конечную точку с помощью этой модели:
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 ответ
Решение
Вызвать ошибку проверки, если присутствует ключ, кроме двух указанных
В настоящее время flask-restx не позволяет использовать это прямо из коробки. Следующий PR должен добавить эту особенность. Вы можете попробовать внедрить PR в свой код даже сейчас, создав собственный класс Model с предлагаемыми изменениями.
Вызвать ошибку проверки, если ни один из ключей отсутствует, а требуется только по одному за раз
Я думаю, самый простой способ - напрямую использовать 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']}]
})
К сожалению, это будет работать только для проверки входных данных и не будет работать для маршалинга ответов.