У меня много конечных точек, но они используют одну и ту же схему jsonapi.
POST /foods
{
"data": {
"type": "food",
"attributes": {
"name": "abc",
"item": "food"
}
}
}
POST /chats
{
"data": {
"type": "food",
"attributes": {
"name": "bcd",
"item": "chat"
}
}
}
POST /animals
{
"data": {
"type": "food",
"attributes": {
"name": "poi",
"item": "animals"
}
}
}
Моя схема:
import marshmallow_jsonapi as jsonapi
ItemSchema(jsonapi.Schema):
id = jsonapi.fields.UUID(dumps_only=True)
name = jsonapi.fields.String(required=True)
item = jsonapi.fields.String(required=True)
class Meta:
type_ = "items"
strict = True
Следуя стандарту jsonapi, type
должен соответствовать каждой конечной точке (foods
, chats
, animals
).
import marshmallow_jsonapi as jsonapi
FoodSchema(jsonapi.Schema):
id = jsonapi.fields.UUID(dumps_only=True)
name = jsonapi.fields.String(required=True)
item = jsonapi.fields.String(required=True)
class Meta:
type_ = "foods"
strict = True
import marshmallow_jsonapi as jsonapi
ChatSchema(jsonapi.Schema):
id = jsonapi.fields.UUID(dumps_only=True)
name = jsonapi.fields.String(required=True)
item = jsonapi.fields.String(required=True)
class Meta:
type_ = "chats"
strict = True
import marshmallow_jsonapi as jsonapi
AnimalSchema(jsonapi.Schema):
id = jsonapi.fields.UUID(dumps_only=True)
name = jsonapi.fields.String(required=True)
item = jsonapi.fields.String(required=True)
class Meta:
type_ = "animals"
strict = True
Каким образом можно уменьшить избыточный код, чтобы не иметь кучу копий ItemSchema
только с измененным type
?