我正在尝试构建REST API,并且在如何表示多对1单向关系方面有点不知所措。
我有4个组件代表汽车的4个部分(发动机,变速箱,车轮,车身)。
现在很明显,组件实体不需要汽车实体,只有汽车关心组件。
我想知道的是处理汽车资源的REST输入的最佳方式。
1)我是否应该要求将完整的模型提交给服务(例如,包括与完整转移实体的传输)?
2)调整进来的数据只接受所需实体的ID(例如engine_id,transmission_id)?
我对此感到有点困惑,并且在谷歌搜索后无法找到一个好的例子。
public class Engine
{
private Integer id;
// Engine specific stuff
}
public class Transmission
{
private Integer id;
// Transmission specific stuff
}
public class Wheels
{
private Integer id;
// Wheels specific stuff
}
public class Body
{
private Integer id;
// Body specific stuff
}
public class Car
{
@Id
private Integer id;
@ManyToOne
@JoinColumn(name="engine_id")
private Engine engine;
@ManyToOne
@JoinColumn(name="transmission_id")
private Transmission transmission;
@ManyToOne
@JoinColumn(name="wheels_id")
private Wheels wheels;
@ManyToOne
@JoinColumn(name="body_id")
private Body body;
}
答案 0 :(得分:0)
1)否。汽车显然属于您的问题域,您应该将它们视为这样并识别它们。您还应该具有允许检索具有特定engine_id的所有汽车的功能,等等。根据你如何陈述问题,如果所有4个id都定义了一辆汽车,那就不明确了。
2)如果我正确理解您的问题,是的,ID是REST设计的关键部分。这并不意味着您无法显示下级对象列表甚至搜索列表。
答案 1 :(得分:0)
让用户首先构建有效的Transmission,Engine,Body和Wheels。然后要求他们在构建Car时将ID或URL传递给这些资源。