0

我正在尝试构建一个 REST API,但对于如何表示多对一的单向关系有点不知所措。

我有 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;
}
4

2 回答 2

0

1)不。汽车显然属于您的问题域,您应该将它们视为此类并识别它们。您还应该具有允许检索具有特定 engine_id 等的所有汽车的功能。根据您对问题的陈述方式,如果所有 4 个 id 都定义了一辆车,那就不明确了。

2)如果我正确理解您的问题,是的,ID 是 REST 设计的关键部分。这并不意味着您不能拥有显示从属对象列表甚至搜索的功能。

于 2013-08-17T21:04:19.533 回答
0

让用户首先构造一个有效的变速箱、发动机、车身和车轮。然后要求他们在构建 Car 时将 ID 或 URL 传递给这些资源。

于 2013-08-18T11:57:05.863 回答