Zrozumieć różnicę między PUT i POST.
PUT ma na celu zastąpienie zasobu (http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6) wskazywanego przez identyfikator URI nowym. I jest to idempotentne, tzn. Ile razy wywołasz go z taką samą ładownością, wynik jest taki sam; udostępni ten sam zasób za pośrednictwem URI.
Tak więc, jeśli zasób już nie istnieje, zostanie utworzony nowy. Nawet w tym przypadku wynik jest taki sam, tzn. Udostępni ten sam zasób za pośrednictwem URI.
POST oznacza utworzenie pod-zasobu (http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5) do zasobu wskazywanego przez URI.Jeśli zasób jest listą, to doda element do niego. Jeśli jest to przedmiot, powinien dodać coś do przedmiotu, może to być atrybut.
Najlepiej jeśli element wskazywany przez identyfikator URI jest niedostępny, powinien to być warunek błędu. Może być "404". POST polega na dodawaniu do istniejącego zasobu.
Wychodząc z pytaniem, najlepiej użyć testu POST z "/ entity /" jako identyfikatorem URI, jak w powyższym opisie. Nie powinieneś używać nieistniejącego identyfikatora UUID zasobu w URI z metodą POST. Jeśli używasz PUT, użyj "/ entity /".
POST /entities/ HTTP/1.1
Content-Type: application/json
{
UUID: <UUID>..
OtherStuff: ...
}
PUT /entities/<UUID> HTTP/1.1
Content-Type: application/json
{
UUID: <UUID>..
OtherStuff: ...
}
reakcji powinien być taki sam
HTTP/1.1 201 Created
Location: http://www.examples.com/entities/<uuid>/
chociaż sprzedaży jest idempotent ale jeśli metoda sprzedaży jest ponownie użyty, należy używać 200 lub 204 w odpowiedzi.
Twoje drugie pytanie: najlepiej pełny szczegół zasobów powinien znajdować się w polu danych PUT zamiast tylko URI.
Dezorientujesz "REST" za pomocą "HTTP". Nie ma "REST RFC". Istnieje "HTTP RFC", ale obecnie nie jest to już RFC 2616. –