[英]REST API Design with unidirectional relationships
我正在尝试构建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;
}
1)不会。汽车显然属于您的问题领域,您应该这样对待它们并加以识别。 您还应该具有允许检索具有某些engine_id的所有汽车的功能,依此类推。 根据您陈述问题的方式,如果所有4个ID都定义了一辆汽车,则模棱两可。
2)如果我正确理解您的问题,是的,id是REST设计的关键部分。 这并不意味着您无法显示下级对象甚至搜索的功能。
首先让用户构造有效的变速箱,发动机,车身和车轮。 然后要求他们在构造Car时将ID或URL传递给这些资源。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.