簡體   English   中英

具有單向關系的REST API設計

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM