Verstehen Sie den Unterschied zwischen PUT und POST.
PUT soll Ressource (http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6) ersetzen, auf die der URI mit einem neuen verweist. Und es ist idempotent, d.h. wie oft Sie es mit derselben Nutzlast aufrufen, das Ergebnis ist das gleiche; Es wird dieselbe Ressource über den URI verfügbar machen.
Also, wenn die Ressource nicht dort ist, wird bereits eine neue erstellt. Selbst in diesem Fall ist das Ergebnis dasselbe, d. H. Es wird dieselbe Ressource über den URI verfügbar gemacht.
POST bedeutet, eine Unterressource (http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5) für die Ressource zu erstellen, auf die der URI zeigt.Wenn die Ressource eine Liste ist, fügt sie ein Element hinzu. Wenn es ein Element ist, dann sollte es etwas zum Objekt hinzufügen, ein Attribut kann sein.
Also, im Idealfall, wenn das Element, auf das der URI verweist, nicht verfügbar ist, sollte es eine Fehlerbedingung sein. Kann ein "404" sein. Beim POST geht es darum, eine vorhandene Ressource hinzuzufügen.
Kommen zu Ihrer Frage, ist es am besten, POST mit "/ entities /" als URI wie in der obigen Beschreibung zu verwenden. Sie sollten keine nicht vorhandene Ressourcen-UUID im URI mit der POST-Methode verwenden. Wenn Sie PUT verwenden, verwenden Sie "/ entities /".
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: ...
}
Antwort sollte
HTTP/1.1 201 Created
Location: http://www.examples.com/entities/<uuid>/
gleichen sein, obwohl PUT idempotent ist, aber wenn der PUT Verfahren wieder verwendet wird, dann sollte es 200 oder 204 in Reaktion verwenden.
Ihre zweite Frage: Idealerweise sollte das vollständige Ressourcendetail in der PUT-Nutzlast und nicht nur in der URI enthalten sein.
Sie verwechseln "REST" mit "HTTP". Es gibt keinen "REST RFC". Es gibt einen "HTTP RFC", aber heutzutage ist es nicht mehr RFC 2616. –