Wie man die REST-Technologie einführt

Es gibt zwei Seiten zu dieser Geschichte, ist das erste, wie man gesetzmaßige REST-Anträge erzeugt, und die Sekunde ist, wie man die Antworten richtig anfaßt.

Erzeugen Von von Anträgen

Wenn sie zum Erzeugen des Antrags kommt, haben Sie drei Hauptwahlen. Zuerst können Sie den Antrag manuell erzeugen mit Überschrift PHPs arbeiten. Dieses gibt Ihnen komplette Flexibilität, wenn es den Antrag, aber erzeugt, bezieht die meiste Kodierung mit ein. Zweitens können Sie eine von PHPs eingebauten Antragfunktionen wie file_get_contents() verwenden oder file()/fopen(), fread() und fclose(). Mit dieser Methode wird eine Menge ausführlichen Informationen automatisch von PHP angefaßt, und Sie empfangen die gleiche Antwort. Schließlich können Sie eine kundenspezifische Kategorie benutzen, die entworfen ist, mit der API in der Frage verwendet zu werden. Im Allgemeinen erfordern diese Kategorien nichts mehr als die Parameterliste, und werden die Resultate in Form eines kundenspezifischen Gegenstandes zurückbringen oder sie zugänglich durch eine Kategorie bilden.

Manuelles Erzeugung

Anträge zu erzeugen ist manuell das erste mal, nach diesem nur tricky, Code-verwendet und Modularität Stoß innen wieder. Begrifflich ist die Funktion, die den Antrag erzeugt, recht grundlegend. Zuerst werden alle Antragparameter vorbereitet, um korrektes Getriebe sicherzustellen. Zunächst ist das URL für den Endpunkt erzeugt, analysiert dann und gebrochen oben in seine Bestandteile. Schließlich wird der Antrag selbst mit Einfaßungen gesendet:

functioncallapi($endpoint, #, #, #, #)
{
  $action = urlencode($action);
  $type = urlencode($type);
  $keyword = urlencode($keyword);

  

Drei der geführten Parameter sind URL kodiert. Dieses ist notwendig, um sie sicherzustellen werden überschritten richtig über das URL. Im vorhergehenden Beispiel wurde eine Suche nach "Art" durchgeführt; wenn die Suche anstatt "Artbuch gewesen war," würde der Raum kodierung erfordert haben, und das resultiert in style%20book. Ich habe die Kodierung der devkey Variablen vernachlässigt und vertraut, daß die herausgebenberechtigung nahm, wie sie in Betrachtung verwendet würde, als, sie verursachend.

  $url = $endpoint."?devkey=$devkey&action=$action&type=$type&keyword=$keyword";
  $url_info = parse_url($url);
  $host = # ' ];
  $path = # ' ]. "?" .$url_info[‘Frage ' ];
  $data = "";

Hier wird das URL selbst, einschließlich die jetzt URL-KODIERTEN Parameter erzeugt. Das URL muß sein deconstructed unten zu seinen Bestandteilen für Gebrauch im rohen Einfaßung Anschluß.

  #, 80);
  fputs($fp, "PFOSTEN". $path "HTTP/1.1\r\n");
  fputs($fp, "Wirt: ". # ");
  fputs($fp, "nehmen an: */* \r\n");
  fputs($fp, "Accept-Charset:ISO-8859-1, utf-8;q=0.7, *;q=0.7\r\n");
  fputs($fp, "Connection:close\r\n");
  fputs($fp, "Content-Type:application/x-www-form-urlencoded\r\n");
  fputs($fp, "Inhalt-Länge: ".strlen($data). "\r\n\r\n");
  fputs($fp, "# ");

Hier werden die Informationen, die durch vorhergehenden Code erzeugt werden, schließlich gesendet. Die erste fputs() Linie schickt den Weg zum erbetenen Dokument, und die zweite Linie spezifiziert den gewünschten Wirt.

  # = "";
  while(!feof($fp))
  {
    #, 128);
  }
  fclose($fp);
  list($http_headers, $http_content)=explode("\r\n\r\n", #);
  Rückkehr #;
}

Schließlich wird die Antwort zurückgeholt und der Inhalt der Antwort wird zurückgebracht. Sie erlernen, wie man Antworten in den Abschnitten anfaßt, die kurz diese Seite von Sachen beschäftigen.

Schnelles Erzeugung

Eingebaute Funktionen Akte PHPs verwendend, kann der gleiche Prozeß mit weniger Code viel durchgeführt werden (obwohl Sie weniger Flexibilität haben). Begrifflich bearbeitet diese Funktion dasselbe wie das vorhergehende, ausgenommen alle Akte Einfaßung Anrufe mit einem Anruf zum file_get_contents() ersetzt werden:

functioncallapiquick($endpoint, #, #, #, #)
{
  $action = urlencode($action);
  $type = urlencode($type);
  $keyword = urlencode($keyword);
  $url = $endpoint."?devkey=$devkey&action=$action&type=$type&keyword=$keyword";
  $response = @file_get_contents($url);
  Rückkehr #;
}

Es gibt wirklich nicht mit diesem Beispiel zu erklären viel. Die URL kodierung wurde vorher besprochen, und der einzelne file_get_contents() Anruf faßt die ganze Magie an. Das Etzeichen vor dem Funktion Anruf wird verwendet, um alle mögliche Warnungen zu unterdrücken, die aus einer nicht vorhandenen Akte oder einem URL entstehen können, weil diese durch die benennende Funktion (file_get_contents() angefaßt werden sollten zurückbringen falsches in diesen Fällen). In den Klimas pre-PHP5 müssen Sie fopen() anstelle vom file_get_contents() benutzen. Etwas Flexibilität ist mit dieser Antragart verloren, weil Sie kundenspezifische Überschriften oder wahlweise freigestellte Überschriften nicht mehr einstellen können, die erfordert werden können oder sehr wünschenswert abhängig von der API, auf die Sie einwirken.

Automatisierte Werkzeuge

Während die Popularität des Netzes instandhält, willen Zunahmen, also das Vorherrschen der prebuilt Kategorien, um die schmutzige Arbeit von auf den Bediener wirklich einwirken anzufassen. Wenn der Service, den Sie auf einwirken möchten, eine vorhandene Kategorie, es ist definitiv wert das Schauen in hat. Die Kategorie zugänglich zu machen ist selbstverständlich von der Kategorie selbst abhängig. Es sollte mit genügenden Unterlagen kommen, und Zugang wahrscheinlich unterscheidet zuviel sich nicht von den früheren Beispielen — gerade mit einer wenig mehr Fehlerprüfung (Sie Hoffnung). Etwas, im Verstand zu halten ist, daß viele prebuilt Module von den dritten Parteien entwickelt und beibehalten werden, und wie so Sie warten müssen konnten wann, nachdem neue Eigenschaften auf der API freigegeben sind, damit sie mit Ihrer Kategorie vorhanden werden.

Behandlung der Antwort

Wie Sie die Antwort beschäftigen, hängt von ab, welcher Methode des Schickens dem Antrag Sie wählen Sie. Wenn Sie den Antrag entweder manuell erzeugten oder, mit dem Hilfsmittel von einer von PHPs eingebauten Funktionen (wie file_get_contents()) müssen Sie auch die Antwort manuell anfassen. Wenn Sie ein third-Partei Modul benutzten, hat es seine eigene Schnittstelle für das Zurückholen von von Resultaten.

Die Antwort manuell analysieren

Die Antwort stellte vom Bediener sollte ein XML Dokument sein zur Verfügung; glücklicherweise war XML entworfen, um einfach zu sein zu analysieren. Leider egal wie es entworfen war, nichts manuell ist zu analysieren normalerweise nicht eine Menge Spaß. PHP5 kommt mit SimpleXML, das die Behandlung der XML Dokumente eine Brise bildet. Benutzer PHP4 haben nicht SimpleXML; jedoch sind einige third-Partei Module wie MiniXML vorhanden, daß ähnliche Funktionen durchführen Sie.

Sobald Sie die Antwort empfangen haben, sie in einen SimpleXML Gegenstand sollte zu haften eine Brise sein. Mit dem vorhergehenden Bibliothekbeispiel und der Antragfunktion beenden Sie oben mit etwas so:

# = callAPIQuick('http://library.example.com/api.php ', ' 123', ' Suche ',
' Buch ',‘Art ');
if($response)
{
  $xml = simplexml_load_string($response);
  print_r($xml);
}else
{
  Echo "Störung Ladenzufuhr";
}

Hier ist die Antwort nicht falsch (und folglich etwas, vermutlich das XML, das Sie für, wurden zurückgegangen hofften). Merken Sie, daß diese Annahme im Allgemeinen hübsches gültiges ist. Wenn ein Bediener, der eine API bereitstellt, eine Störung antrifft, sollte er die Störung in einem netten XML Format zur Verfügung stellen. Die simplexml_load_string() Funktion nimmt die Antwort und macht sie zu einen XML Gegenstand, der direkt erreicht werden kann, durch und so weiter wiederholt worden. Schließlich ergibt die print_r() Funktion einen benutzerfreundlichen Ausgang, der den Inhalt des Gegenstandes zeigt, hier gezeigt:

SimpleXMLElement Gegenstand
(
 [ Antrag ] = > SimpleXMLElement Gegenstand
  (
   [ RequestId ] = > 123a456
   [ Parameter ] = > SimpleXMLElement Gegenstand
   (
     [ Argument ] = > Reihe
     (
       [ 0 ] = > SimpleXMLElement Gegenstand
       (
       )
       [ 1 ] = > SimpleXMLElement Gegenstand
       (
       )
       [ 2 ] = > SimpleXMLElement Gegenstand
       (
       )
       [ 3 ] = > SimpleXMLElement Gegenstand
       (
       )
     )
   )
  )
 [ Antwort ] = > SimpleXMLElement Gegenstand
  (
   [ ResultCount ] = > 2
   [ Einzelteil ] = > Reihe
   (
     [ 0 ] = > SimpleXMLElement Gegenstand
     (
       [ Titel ] = > Art-Buch Vol. 1
       [ Status ] = > Heraus
       [ Einflüsse ] = > 3
       [ CopiesOnHand ] = > 2
       [ Autor ] = > Jon Damhirschkuh

     )

     [ 1 ] = > SimpleXMLElement Gegenstand
     (
       [ Titel ] = > Art-Buch Vol. 2
       [ Status ] = > Innen
       [ Einflüsse ] = > 0
       [ CopiesOnHand ] = > 1
       [ Autor ] = > Jon Damhirschkuh
     )
   )
  )
)

Diesen Ausgang betrachtend, sollten Sachen eines Paares sofort auf der Hand liegen:

  • SimpleXML tut eine Menge wirklich nützliche Sachen für Sie sehr schnell.

  • Die resultierenden Gegenstände zeigen nicht Attribute an (sehen Sie die Argumentliste unter Parameter). Die Daten sind innen dort, es gerade werden gezeigt nicht mit einem print_r().

  • Reihen fangen an, bei 0 zu zählen (gerade wie überall sonst in PHP, ist es etwas, im Verstand zu halten gerecht).

  • Die Einzelteilreihe ist das gerechte mit einer foreach() Schleife angefaßt zu werden Bitten.

Alle diese Informationen im Verstand tragend, sind ein Paar der schnellen Linien des Codes alles, das angefordert wird, um den Inhalt völlig zu erforschen.

Echo, ", das Sie nach suchten: {# request->parameters->argument[3]->value}<br>> ";
Echo "sind hier Ihr {# response->resultcount>} results<br >";
foreach($xml->Response->Item ALS &$item)
{
hallen Sie "{# title>} vorbei wider {# author}<br>>";
}

Hier wird der Suchfrage und -resultat Zählimpuls dargestellt, und dann werden die Resultate selbst durch wiederholt. Die Syntax erhält ein wenig sonderbares, wenn das Beschäftigen Reihen (wie demonstriert, wenn die Suchfrage gedruckt wird), also es häufig vernünftig ist, durch sie für Klarheit zu wiederholen.

REST ist eine wirkungsvolle Methode des Fragens von von RemoteaPIs, wenn es zulässig für den Antragteil Ihrer Verhandlung ist, im freien Raum stattzufinden. REST-Fragen zu verursachen ist so einfach wie, die erforderlichen Parameter und das Spezifizieren eines Endpunkts für den Anruf URL-KODIEREND. Das Beschäftigen REST-Antworten kann trickier wenig sein; jedoch durch wirksam einsetzende Werkzeuge mögen Sie SimpleXML, es kann auch schnell durchgeführt werden.

dieses ist ein Artikel, der von Emanuela Hedrick hinzugefügt wird


Verzicht: Unsere Web site ist nicht zu der Information verantwortlich, die durch diesen Artikel enthalten wird. Dieser Artikel reflektiert keineswegs die Ansichten, die Meinungen, die Gedanken oder den Glauben des Artikelverzeichnisstabes.

Übersetzung Nachricht: Der Artikel ", wie man die REST-Technologie" wurde übersetzt mit einem automatisierten Übersetzungsdienst einführt. Wir entschuldigen herzlichst uns für alle mögliche Übersetzung Störungen, die auftraten. Danke für das Verstehen.

Online: 861 users browsing the articles directory