swagger ist nicht vollständig mit dem json-Schema kompatibel. Ich verwende eine Bibliothek mit dem gleichen Namen wie jsonschema zur Validierung mit jsonschema in Python.
Wie ich bereits geschrieben habe, erlaubt swagger keine Nulltypen. Es gibt jedoch Zeiten, in denen Sie null zurückgeben möchten, daher einen Hinweis zum Umgang damit.
Einige Tools für Swagger fügen ein Attribut namens "x-nullable" hinzu, um nullable zu unterstützen. Bei Swagger dürfen Attribute, die mit "x-" beginnen, frei angehängt werden.
Die Methode, um damit umzugehen, ist wie folgt.
from jsonschema.validators import Draft4Validator, extend
from jsonschema._validators import type_draft4
def type_custom(validator, types, instance, schema, nullable_attr="x-nullable"):
if schema.get(nullable_attr, False):
if not isinstance(types, (list, tuple)):
types = [types]
types.append("null")
yield from type_draft4(validator, types, instance, schema)
CustomValidator = extend(Draft4Validator, {
"type": type_custom,
})
Sie können es tatsächlich so verwenden.
schema = {
"type": ["string", "null"]
}
validate = CustomValidator(schema).validate
print(validate(None, schema))
print(validate(None, {"type": "string", "x-nullable": True}))
Recommended Posts