より優れたデザインプラクティスは何ですか?REST API - 関連するオブジェクトの詳細やIDだけを含む
私はオブジェクトAを持っていて、いくつかの関連オブジェクトを含んでいるとします。たとえば、私は車オブジェクトを持っていて、それはさまざまなタイプです。
は、私はちょうどそれらのリソースへのIDの持つ要求api.example.org/cars/1
応答に
{
"id": 1,
"name": "Some Car",
"types": [
1,
2
]
}
(誰かがそれらについての詳細を必要がある場合に、別のAPIコールはapi.example.org/type/1
で必要)または
{
"id": 1,
"name": "Some Car",
"types": [
{
"id": 1,
"name": "Some Type",
"something": "Blah"
},
{
"id": 2,
"name": "Some Type",
"something": "Blah"
}
]
}
「displayAll」のようなオプションのパラメータを指定し、1つのAPI呼び出しですべて取得する必要があるパラメータの名前を配列します(この場合はタイプ)。
質問:ルートURLとIDを分けていないと、ルートURLが変更された場合(v1からv2など)、以前のすべてのリンクが壊れますか?クライアントを誘導するためにルートを集中させたいというユースケースはありませんか? –
非常に少数の安定した「クール」URIを維持し、変更する必要はなく、下にある他のすべてのURIをハイパーリンクされたナビゲーションで到達可能にします。クールなエントリーポイントのURIから開始し、それらの関係をナビゲートすることで必要なリソースを見つけるようにクライアントアプリケーションをコード化する必要があります。これはHATEOASの中核部分です。あなたのURI構造の大部分は、必要に応じて柔軟に変更可能でなければなりませんが、既存のアプリケーションには影響を与えません。 –