def build_parameter(field):
"""
Build a parameter from a marshmallow field.
See: https://github.com/marshmallow-code/apispec/blob/dev/apispec/ext/marshmallow/swagger.py#L81
"""
if hasattr(field, SWAGGER_TYPE):
parameter = resolve_tagged_field(field)
elif getattr(field, "enum", None):
parameter = resolve_enum_field(field)
elif getattr(field, 'as_string', None):
parameter = resolve_numeric_string_field(field)
elif isinstance(field, TimestampField):
parameter = resolve_timestamp_field(field)
else:
parameter = resolve_default_for_field(field)
if field.metadata.get("description"):
parameter["description"] = field.metadata["description"]
if field.default:
parameter["default"] = field.default
# nested
if isinstance(field, fields.Nested):
parameter["$ref"] = "#/definitions/{}".format(type_name(name_for(field.schema)))
# arrays
if isinstance(field, fields.List):
parameter["items"] = build_parameter(field.container)
return parameter
评论列表
文章目录