用JSON Schema替换DRF Serializer:声明式API校验
使用JSON Schema作为序列化与验证的唯一真相源,结合DRF的渲染器与解析器,实现前后端共享同一套校验规则,同时支持OpenAPI文档自动生成。 · 难度:入门 · +10XP
Schema驱动的序列化
DRF Serializer虽然强大,但校验规则与Python代码耦合,难以跨语言复用。本教程创建一个SchemaSerializer,继承自serializers.Serializer,重写to_internal_value与to_representation方法,内部使用jsonschema库进行校验。你只需定义一组JSON Schema字典,即可完成字段校验、默认值、嵌套对象解析。同时利用自定义的SchemaRenderer直接在OpenAPI响应中暴露该Schema,让前端工程师直接复制使用。
# fields/schema_field.py
from rest_framework import serializers
import jsonschema
class JSONSchemaField(serializers.Field):
def __init__(self, schema, **kwargs):
self.schema = schema
super().__init__(**kwargs)
def to_internal_value(self, data):
jsonschema.validate(data, self.schema)
return data
def to_representation(self, value):
return value