Jaka jest lepsza praktyka projektowa?REST API - zawierają powiązane szczegóły obiektu lub tylko ID
Jeśli mam obiekt A i zawiera on pewne powiązane obiekty, na przykład mam obiekt samochodu i jego różne typy.
Mam na żądanie api.example.org/cars/1
reagują tylko z identyfikatorem do tych zasobów (więc jeśli ktoś potrzebne dane o nich innym wywołanie API jest wymagany przy api.example.org/type/1
)
{
"id": 1,
"name": "Some Car",
"types": [
1,
2
]
}
lub podać szczegóły na temat tych środków, a także
{
"id": 1,
"name": "Some Car",
"types": [
{
"id": 1,
"name": "Some Type",
"something": "Blah"
},
{
"id": 2,
"name": "Some Type",
"something": "Blah"
}
]
}
Lub podaj opcjonalny parametr, taki jak "displayAll", a następnie tablicę z nazwami parametrów, które powinny zostać pobrane w jednym wywołaniu API (w tym przypadku typy).
pytanie: jeśli nie rozdzielasz adresu URL katalogu głównego i id, jeśli adres URL katalogu głównego zmieni się (v1 na v2 lub cokolwiek innego), wszystkie poprzednie linki zostaną zerwane, nie? czy nie ma sensu, aby chcieć scentralizować root, aby skierować klienta? –
Należy utrzymywać bardzo małą liczbę stabilnych "chłodnych" identyfikatorów URI, które nigdy nie powinny się zmieniać, i sprawić, aby każdy inny URI znajdujący się pod nimi był osiągalny za pomocą hiperłącza nawigacji. Aplikacje klienckie powinny być zakodowane, aby rozpocząć od URI punktu wejścia Cool i znaleźć potrzebne zasoby poprzez nawigację tych relacji. To kluczowa część HATEOAS - większość twoich struktur URI powinna być elastyczna i zmienna w miarę twoich potrzeb, ale bez wpływu na istniejące aplikacje. –