Get leckeres Gebrauch erhalten Anfragen nach Erstellung anstelle von Post, und warum sollte ich nicht dasselbe tun?

StackOverflow https://stackoverflow.com/questions/8802795

  •  25-10-2019
  •  | 
  •  

Frage

Ich schaue mir das an Köstliche API und siehe Folgendes ist die Operation zum Erstellen eines neuen Lesezeichens:

https://api.del.icio.us/v1/posts/add?&url={URL}&description={description}

Es sieht so aus, als ob sie eine GET-Anforderung zum Erstellen von serverseitigen Datenbankeinträgen verwenden, die ich an anderer Stelle gelesen habe, die nicht mit GET-Anfragen durchgeführt werden sollte, sondern nur mit Postanforderungen.

Ich schreibe gerade meine eigene API und denke, dass es fabelhaft ist, Benutzer mit der API direkt aus der URL zu interagieren. Aber Sie können dies nur tun, wenn Sie Crud -Operationen zu erlauben.

Also, ist lecker wirklich Crud Operations über Get? Gibt es einen wichtigen Grund, warum ich in meiner API nicht dasselbe tun sollte, oder ist Post nur für Crud vorgeschrieben, um eine zufällige Anrufung zu verhindern?

War es hilfreich?

Lösung

Ein versehentlicher Aufruf ist ein Teil davon; Das bedeutet die HTTP -Spezifikation, wenn sie über "idempotent" -Methoden spricht. Aber Sie könnten argumentieren, dass das, was lecker tut, idempotent ist, solange die URL nur einmal hinzugefügt wird, egal wie oft Sie werden. Aber was noch wichtiger ist, dass Get Is ist sicher:

The important distinction here is that the user
did not request the side-effects, so therefore
cannot be held accountable for them.

Aus Sicht des Schnittstellendesigns aus wollen Benutzer-Agents, um postsüchtig zu machen und schwieriger zu machen und zu löschen, als zu bekommen oder zumindest deutlich unterschiedlich, damit sich Benutzer auf diesen Unterschied verlassen können, um darauf hinzuweisen, wenn ihre Aktionen zu einer Änderung des Ressourcenzustands führen, weil sie sich sind Verantwortlich für diese Änderungen. Verwenden Sie die Verwendung von GET, um Änderungen vorzunehmen, auch wenn idemPotent diese Rechenschaftslinie, insbesondere wann, verwischt Präfetierer sind weit verbreitet.

Andere Tipps

Dies hängt davon ab, ob Sie die restlichen Prinzipien befolgen, um die Dinge zu ändern, die für die Änderung von Dingen verboten sind. Daher sagen die meisten Leute mit REST -Nutzung Post für Änderungen.

Es gibt jedoch einen Unterschied zwischen Get und Post. Laut RFC -Anfragen haben GET -Anfragen immer eine Follow -up -Antwort. Und wenn Sie Post verwenden, müssen Sie das Ausleitungs-Nach-Post-Muster befolgen.

Eine weitere Einschränkung ist, dass URLs eine begrenzte Größe haben können. Wenn Sie also nur so lange funktionieren, funktioniert Ihre Eingabedaten kurz genug. Die köstliche API hat also einen Fehler. Sie können nicht jede mögliche URL über einen GET -Parameter hinzufügen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top