围绕具有类似类型的对象设计graphql模式的最佳方法是什么?
我有一个类似的问题:除了graphql模式。我希望有一些实现graphql经验的人能够帮助我权衡以下方法的利弊 假设我有两个类似的业务对象,轿车和皮卡,它们具有以下属性 轿车围绕具有类似类型的对象设计graphql模式的最佳方法是什么?,graphql,Graphql,我有一个类似的问题:除了graphql模式。我希望有一些实现graphql经验的人能够帮助我权衡以下方法的利弊 假设我有两个类似的业务对象,轿车和皮卡,它们具有以下属性 轿车 制造 模型 重量 价格 拾取 制造 模型 重量 价格 床长 拖航能力 尽管某些类型不适用于轿车,但创建名为车辆的通用类型并赋予其所有属性是否更有意义 type Vehicle { make model weight price bed_length towing_ca
- 制造
- 模型
- 重量
- 价格
- 制造
- 模型
- 重量
- 价格
- 床长
- 拖航能力
type Vehicle {
make
model
weight
price
bed_length
towing_capacity
}
或者最好将每种类型划分为各自不同的类型,如:
type Sedan {
make
model
weight
price
}
type Pickup {
make
model
weight
price
bed_length
towing_capacity
}
或者,有没有更好的方法来处理这些类似的对象,这些对象只有几个不同的属性?是,您可以定义一个通用类型
车辆
,但我建议只使用通用属性,而不是将所有属性限制在基本模型中-这是一种设计类的糟糕方法。如果有更多具体类型(或将来添加),例如轿车、皮卡车、卡车、SUV等,您会怎么做。。是否要添加此基本车辆对象中的所有字段?这可能会在以后给您带来问题
最好的方法是在可以使用所有公共字段/属性定义基本接口类型的地方使用,该接口类型可以由其他具体的GraphQL类型实现
让我举例说明:
将基本/i面类型车辆定义为:
interface Vehicle {
make: String
model: String
weight: String
price: Int
}
现在,将实现车辆接口的具体类型轿车和皮卡及其自身的非通用属性定义为:
通过这种方式定义对象类型可以在数据字段投影方面提供更大的灵活性。这意味着,在查询此对象类型时,您可以灵活地查询Vehicle
中存在的公共字段以及属于子对象类型(实现Vehicle
type)的其他字段
谢谢那正是我想要的。
type Sedan implements Vehicle {
make: String
model: String
weight: String
price: Int
other_info: String
}
type Pickup implements Vehicle {
make: String
model: String
weight: String
price: Int
bed_length: Int
towing_capacity: Int
}
query VehiclesList {
vehicles {
make
model
weight
price
... on Sedan {
other_info
}
... on Pickup {
bed_length
towing_capacity
}
}
}