Ich habe eine sehr schnelle und einfache PHP-Anwendung entwickelt, um Kleinanzeigen aus einer XML-Datei zu lesen und dem Benutzer die Durchführung von CRUD-Operationen zu ermöglichen (dies war eine Hausaufgabe).
Ich habe jetzt die Aufgabe, diese Anwendung zu einem REST-fähigen Dienst zu entwickeln. Der Professor scheint eigentlich keine Erfahrung mit RESTful-Diensten zu haben, weil er sagte, dass meine Anwendung für die nächste Aufgabe gefunden wurde, wenn meine Forschung zeigt, dass sie nicht wirklich alle REST-Anforderungen erfüllt.
Unabhängig davon möchte ich das zu Lernzwecken richtig machen, auch wenn ich meinen alten Auftrag abgeben und eine gute Note bekommen kann. Ich habe Schwierigkeiten zu lernen, wo ich anfangen soll; Ich bin mir nicht sicher, was genau ein RESTful Service wirklich ist.
Ich denke, der beste Weg, um Rat zu bekommen, besteht darin, Beispielcode aus meiner vorherigen Aufgabe zu veröffentlichen, um zu sehen, wie ich die Dinge gehandhabt habe und wie ich stattdessen mit den Dingen umgehen muss.
Zum Beispiel, hier ist, wie ich neue Kleinanzeigen erstellen.
Create.php
%Vor%CreateSuccess.php
%Vor%Ich verwende auch URL-Parameter für die RUD-Aktionen. Ich habe gehört, URL-Parameter sind auch nicht erlaubt?
Danke.
BEARBEITEN: Also die SWITCH-Anweisung, geht es in die index.php-Datei? Und dann wird jeder Fall eine Funktion aufrufen, dh CreateXML für die POST-Methode? Dann sind die Parameter, die es benötigt, der Objekttyp, die Objekt-ID und der Inhaltstyp? Wie bekomme ich die Werte, um die XML mit zu aktualisieren, schicke ich es einfach an die Create.php-Datei, die die Liste der Eingabefelder enthält?
Wenn Ihr Service alle CRUD-Operationen unterstützt, ist es immer ratsam, eine REST-konforme Schnittstelle zu implementieren. Es ist nicht besonders schwer, das zu tun. Ich habe einige der folgenden Grundlagen erläutert.
Ein RESTful Service macht einfach ein paar Dinge:
Die Idee besteht darin, die Entwicklung von benutzerdefinierten Kommunikationen für diese Dinge zu minimieren, die bereits in der HTTP-Spezifikation definiert sind.
1 - ANFRAGE METHODE
Die vier HTTP-Request-Methoden, die Sie für einen RESTful-Service unterstützen müssen, sind:
und Sie können optional
unterstützenSie können diese wie folgt direkt Ihren CRUD-Aktionen zuordnen:
Um dies zu tun, leiten Sie Anfragen mit einem einfachen Request-Methoden-Router wie folgt richtig:
%Vor%2 - STATUSCODE Sie sollten außerdem HTTP-Statuscodes von Ihrem Dienst implementieren, um den Status zurück an den Client zu übermitteln, z. B .:
Geben Sie dazu einfach Ihre Antwort mit der richtigen HTTP-Header-Ausgabe an, z. B .:
%Vor%Sie können hier auf die vollständige Liste der implementierten HTTP-Statuscodes verweisen: Ссылка
3 - URIs Bei URIs folgen REST-konforme Dienste normalerweise einem Top-down-Ansatz für die kategorisierte Benennung, z. B.
%Vor%Beispiele:
%Vor% Sie können einen sehr rudimentären RESTful-Router für die obige Konvention implementieren, indem Sie Apache mit mod_rewrite
in einer .htaccess
-Datei wie folgt verwenden:
Sie hätten dann index.php
Suchen Sie nach dem entsprechenden Objekttyp und der entsprechenden ID, um entsprechend zu routen, z. B .:
4 - STATELESSIGKEIT Einfach gesagt, der Server behält keinen "Status" für den Client bei. Keine Anforderungen zum Speichern der Sitzung oder des Status. Jede Anfrage repräsentiert eine vollständige Transaktion. I.e. Wenn ich den Benutzer / 1 abhole, erinnert sich der Server nicht daran, dass ich das getan habe, und zukünftige Anforderungen hängen nicht von vorherigen ab oder werden von diesen beeinflusst.
Wenn Sie diese Standards implementieren, herzlichen Glückwunsch, Sie haben einen RESTful Service erstellt!
"RESTful" ist ein weitgefasster Begriff und es gibt Grade von "RESTfulness". Wikipedia ist eine gute Anleitung hier
Hier sind einige Eigenschaften höherer Ebene, die in der anderen Antwort nicht angesprochen werden (was auch gut ist):
Content-Location
verwenden. Accept
und content-type
verwenden. if-*
Header) können Sie sogar optimistisch implementieren Gleichzeitigkeitskontrolle. Location
und Content-Location
und einer Liste der von der Änderung betroffenen URLs. [1,2,3,4,5,6]
aus. Dies ist eine Liste von Artikel-IDs, aber es ist nicht selbstbeschreibend oder Hypertext - der Client muss wissen, dass dies eine Liste von Artikel-IDs ist, und es muss wissen, um eine Artikelressource zu erhalten, muss es eine URL wie erstellen http://example.org/articles/1 ". {"articles":[{"id":1,"url":"http://example.org/articles/1"},...]}
. Wie html sollte ein Client, der einen Restdienst verwendet, nur folgen -Links (nicht make -Links) haben, um andere verwandte Ressourcen zu erhalten. Sie können sogar die verfügbaren Methoden dokumentieren, mit denen Sie eine Ressource manipulieren können: Erstellen, Aktualisieren, Löschen usw.