Jestem projektowania REST API i mimo trałowania szereg przewodników najlepszych praktyk nie mogę znaleźć wiele dotycząca najlepszych praktyk obsługiwać rozbieżności między strukturą reprezentacji potrzebne dla POST
w stosunku do tej samej struktury reprezentacji zwróconej z GET
.Handling różnicy między reprezentacją struktury relaksującego POST i GET
GET
dla manekina user
reprezentacji może wyglądać następująco:
{
"id": 1234,
"created": "2012-04-23T18:25:43.511Z",
"username": "[email protected]",
"name": "John Doe"
}
Jednak POST
dla tego samego manekina user
reprezentacji nie można określić pewne właściwości (czyli id
i created
)
{
"username": "[email protected]",
"name": "John Doe"
}
Oczywiście jest to zbyt uproszczony przykład, ale biorąc pod uwagę, że użytkownik nie może określić niektórych pól (i może nie zawsze czy są oczywiste, które z nich są istotne dla zastosowanej metody) czy jest to najlepsza praktyka, aby uzyskać oddzielne reprezentacje dla każdego lub oczekiwać najbardziej kompletnej wersji i obsługiwać dysparytet danych w sposób przezroczysty na serwerze?
Pomimo pozornej łatwości posiadania pojedynczej reprezentacji i obsługi strony serwera różnicowego obawiam się, że byłoby to złe doświadczenie dla użytkownika, gdyby nie było jasne, które wartości można określić (lub zmienić przy użyciu na przykład PUT
). Jeśli tendencja polega na tworzeniu oddzielnych reprezentacji, czy istnieje konwencja nazewnictwa, którą należy zastosować do definicji reprezentacji?
np. i_user
dla użytkownika przychodzącego i o_user
dla użytkownika wychodzącego. Lub user_full
i user_min
lub user
i .user
itp
Aktualizacja: Moja nadmiernie uproszczonym przykładem może nie właściwie zilustrować problem. Wyobraź sobie reprezentację, która ma 50 właściwości (na przykład reprezentację serwera ze wszystkimi jego atrybutami monitorującymi - CPU, RAM, Temp, Storage_drive_a, Storage_drive_b, File_permission itd.) Z tych 50 właściwości, 30 to tylko właściwości do odczytu, a 20 z nich to wartości, które może być ustawiony.