swagger n'est pas entièrement compatible avec le schéma json. J'utilise une librairie du même nom que jsonschema pour la validation avec jsonschema en python.
Comme je l'ai écrit plus tôt, swagger n'autorise pas les types nuls. Cependant, il y a des moments où vous souhaitez retourner null, donc une note sur la façon de le gérer.
Certains outils pour swagger ajoutent un attribut appelé x-nullable
pour prendre en charge Nullable. En termes de swagger, les attributs commençant par x-
peuvent être attachés librement.
La méthode pour résoudre ce problème est la suivante.
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,
})
Vous pouvez réellement l'utiliser comme ça.
schema = {
"type": ["string", "null"]
}
validate = CustomValidator(schema).validate
print(validate(None, schema))
print(validate(None, {"type": "string", "x-nullable": True}))
Recommended Posts