Wie man die SEIFE Technologie einführt

Wie REST bezieht das Einführen der SEIFE, Anträge zu erzeugen und die mit ein Antwort dann anzufassen. Während, die SEIFE Antwort anzufassen dem REST-Resultat ähnlich ist, den SEIFE Antrag ist zu erzeugen ziemlich unterschiedlich.

Erzeugen Von von Anträgen

Anders als REST ist es ziemlich selten, die Anträge zu sehen, die manuell erzeugt werden, obwohl es noch getan werden kann. Im Allgemeinen werden SEIFE Anträge entweder mit einem generischen Werkzeug (wie NuSOAP oder Pear:SOAP) oder mit einer anwendungsspezifischen Kategorie oder Modul erzeugt. Manuelles Erzeugung wird hier umfaßt (ein gutes Verständnis von, wie es funktioniert, kommt in nützliches), sowie NuSOAP.

Anwendungsspezifische Werkzeuge werden, aus Gründen eines Paares ignoriert werden. Durch Definition sind sie Anwendung Besondere und folglich in diesem generischen Artikel nicht sehr nützliches. Zweitens haben die Werkzeuge unterschiedliche Schnittstellen und Funktionalität Niveaus und zwecks die Themagerechtigkeit zu tun, die er einen eingehenden Blick erfordern würde. Schließlich bin ich fest der Meinung daß, wenn Sie aus, wie man darstellen können es Arbeit mit NuSOAP (oder roh, für diese Angelegenheit), Sie kann das anwendungsspezifische Werkzeug erhalten, um auch zu arbeiten bildet.

Manuelles Erzeugung

SEIFE Anträge zu erzeugen ist manuell nicht zu dem Erzeugen von von REST-Anträgen zu unterschiedlich. Der Prozeß des Erzeugens des Antrags und ihn wirklich übertragen wird in zwei verschiedene Funktionen, für das Demonstrieren von von Zwecken aufgespaltet.

  

Für das Erzeugen des Antrags selbst, habe ich beschlossen, eine vorentwickelte Zeichenkette zu benutzen und bloß die erforderlichen Werte an der Laufzeit bevölkere. Es gibt kompliziertere Wahlen (wie Erstellen des Dokumentes innerhalb SimpleXML oder Verursachen es vom Kratzer jeder laufen gelassen), aber sie werden nicht wirklich angefordert:

functioncreaterequest($devkey, #, #, #)
{
  $request = "<?xmlversion=\"1.0 \ "kodieren= \" UTF-8 \ "standalone=\"no \ "? >
< SOAP-ENV:Envelope
 xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"
 xmlns:xsd=\"http://www.w3.org/2001/XMLSchema \"
 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance \" >
  < SOAP-ENV:Body >
    < devkey xsi:type=\"xsd:int\">$devkey</devkey >
    < Tätigkeit xsi:type=\"xsd:string\">$action</action >
    < schreiben Sie xsi:type=\"xsd:string\">$type</type >
    < Schlüsselwort xsi:type=\"xsd:string\">$keyword</keyword >
  </SOAP-ENV:Body >
</SOAP-ENV:Envelope > ";
  Rückkehr #;
}

Wie Sie erklären können, ist die Funktion gerechtes ungefähr so einfaches, wie sie erhalten kann. Merken Sie, daß die Variablen nicht URL-KODIERT worden sind; das ist, weil sie nicht in das URL gesendet werden (die Töne, die, aber offensichtlich sind, in es ist auch einfach zu vermissen).

Wirklich bezieht das Benennen der API, um den Antrag zu übertragen mit ein, irgendeinen Code vom ersten REST-Beispiel zu borgen, weil der Antrag rohem dieses mal geschickt wird.

functioncallsoapapi($data)
{
  $url = "http://library.example.com/api/soap/search";
  $url_info = parse_url($url);
  $host = $url_info[‘Wirt ' ];
  $path = $url_info[‘Weg ' ];

Ich könnte die $host und $path Variablen beim Anfang gerade bevölkert haben, aber dieser sollte freier sein. In einem Produktion System konnten Sie einige CPU Zyklen speichern, indem Sie diese Elemente hardcoding.

  #, 80);
  fputs($fp, "ERHALTEN". $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/soap+xml\r\n");
  fputs($fp, "Inhalt-Länge: ".strlen($data). "\r\n\r\n");
  fputs($fp, "# ");

Dieser Block ist zum vorhergehenden Beispiel fast identisch. Das vorhergehende Beispiel war ein PFOSTEN-Antrag, während dieses ein ERHALTENANTRAG ist, eine Änderung, die mit vorgeschrieben wird durch, was API Sie arbeiten. Die Inhalt-Art Überschrift ist unterschiedlich, genau zu reflektieren, was Sie senden und diesem mal selbstverständlich Sie zu senden haben $data, also ist Inhalt-Länge nicht 0.

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

Dieser Abschnitt ist auch zum REST-Beispiel identisch. Beide jene Funktionen aufzuwickeln, um eine Antwort zurückzuholen ist nur kaum wert das Erwähnen:

$request = createRequest('123 ', ' Suche ', ' book', 'style);
# = callsoapapi($request);

War nicht zu hart!

Anders als REST können Sie nicht file_get_contents() gerade benutzen, um die API zu schlagen, weil Sie den XML Körper mit dem Antrag file_put_contents() senden müssen arbeiten nicht auch nicht, weil Sie die Rückkehr des Warte (file_put_contents() ein internes) benötigen, aber es gibt andere Wahlen. Birne (http://pear.php.net) z.B. hat ein Bündel HTTP-SPEZIFISCHE Funktionen, die etwas von den Kopfschmerzen von den Antrag manuell verursachen Ihre Hände entfernen können, aber gesteht Ihnen die ganze Flexibilität noch zu, die Sie mit manueller Kreation erhalten.

Erzeugung mit NuSOAP

Für alles anders als ein monostabiles Programm, würde ich definitiv mich empfehlen, mit irgendeiner Art eines SEIFE Moduls zu gehen, Ihr Kodierungleben einfacher zu bilden. Obgleich, wenn Sie in Probleme laufen, sie aufzuspüren ein wenig unten sein kann Schmerz. Ich mag einen lokalen Entwicklung Kasten während der Entwicklung verwenden, also der Sacheanfang, der schief geht, ich kann einen Paketsauganleger benutzen, um das request/response in seiner rohen Form zu betrachten.

Begrifflich NuSOAP ist zu verwenden nicht zu die Aufgabe manuell durchführen zu unterschiedlich. Der Gegenstand wird initialisiert, wird die Nutzlast hergestellt, und der Antrag wird gesendet. Der Schlüsselunterschied hier ist, daß NuSOAP die ganze schmutzige Arbeit erledigt.

require('../lib/nusoap.php ');
$client = neues soapclient("http://library.example.com/api/soap/wsdl/", richten) aus;

Hier wird der $client Gegenstand verursacht. Zwei Wahlen sind vorhanden, wenn ein neues soapclient verursacht wird: Sie können entweder die wsdl Akte für den Service spezifizieren (und den zweiten Parameter einstellen, um auszurichten), oder spezifizieren Sie den Endpunkt für den Anruf (und stellen Sie den zweiten Parameter auf falsches ein). Wann immer möglich, ich die wsdl Akte benutzen mag; das NuSOAP Modul kann einige Ihrer Fehler sich verfangen, die Weise und es sicherstellt, daß unterschiedlich um Arten bitten Sie, die alle zum korrekten Endpunkt gehen.

$params = array(
  ' devkey '  = > ' 123',
  ' Tätigkeit '  = > ' Suche ',
  ' Art '    = > ' Buch ',
  ' Schlüsselwort ' = > ' Art '
);

Die Parameter für Getriebe vorzubereiten ist Methoden eines wenig leicht als früh.

# = ' http://library.example.com ';
$action = ' http://library.example.com/api/soap/search ';
$method = "SearchRequest";
$result = # call($method>,
  array(‘SearchRequest ' = > #),
  #, #);

Schließlich werden die letzten Parameter eingestellt, und der Anruf selbst wird gebildet.

Behandlung der Antwort

Eine Antwort von einem SEIFE Antrag anzufassen ist wieder nicht zu der REST-Antwort zu unterschiedlich, die—beide in den ähnlichen XML Formaten zur Verfügung gestellt werden. Die SEIFE Antwort trägt die zusätzlichen Umschlag- und Körperelemente, aber häufig Geschenkdaten in einer ähnlichen Weise innerhalb jener Elemente. Es gibt selbstverständlich etwas Veränderung zwischen der Behandlung der Antwort von einer manuellen Anforderung und von einem NuSOAP Antrag. Beide Methoden werden hier dargestellt.

Die Antwort manuell analysieren

Das Nachahmen des Ausganges, der mit dem REST-Antrag erzeugt wird, verwendet ähnlichen Code, mit einigen Änderungen für den Verkapselungentwurf, der mit SEIFE verwendet wird.

echo"You suchte for:{$xml->Body->LibrarySearchResponse->RequestInfo - >
     keyword}<br > ";

echo"Here sind your{$xml->Body->LibrarySearchResponse->ResponseInfo-    > ResultCount}
     results<br > ";
foreach($xml->Body->LibrarySearchResponse->ResponseInfo->Item ALS &$item)
{
   hallen Sie "{# title>} by{$item->Author}<br >" wider;
}

Dieses erzeugt identischen Ausgang als der REST-Antrag, der früh gezeigt wird. Merken Sie die unterschiedliche Syntax, die verwendet wird, um das Suchschlüsselwort zu erwerben. Es ist nicht ein Attribut dieses mal, also ist Zugang unterschiedlich.

Satzgliederung der Antwort mit NuSOAP

Den Gegenstand zugänglich zu machen, der von NuSOAP zur Verfügung gestellt wird, ist zu den Methoden ein wenig unterschiedliches, die mit SimpleXML verwendet werden, aber die interne Datenstruktur ist ziemlich ähnlich. Das Ändern des Codes, um mit dem NuSOAP Gegenstand zu arbeiten dauert nur einige Momente.

echo"You suchte nach: ".
 # ' ] "<br >";
echo"Here sind Ihr
 {# ' ]}
  results<br > ";
foreach($xml['Body']['LibrarySearchResponse']['ResponseInfo']['Item ' ]   ALS &$item)
{
  Echo "{#‘Titel ' ]} by{$item[‘Author']}<br >";
}

Mit NuSOAP sind die internen Daten erreichtes viel die gleiche Weise, wie eine vereinigende Reihe, so anstatt die OO Methode des Verwendens - >, Kindelemente zugänglich zu machen, sind weitere Reihe Informationen enthalten. Dieses Element gibt identisch zum vorhergehenden Beispiel aus.

SEIFE ist eine wirkungsvolle Methode des Fragens von von APIs, wenn die zusätzlichen Unkosten zulässig sind. Die Verkapselung aller Elemente läßt einfachen Messwert und variablen Bereich innerhalb des Antrags zu. SEIFE Anträge zu verursachen kann wie Schreiben so einfach heraus sein sie einmal, dann gerechte ersetzende Schlüsselvariablen. Wechselweise kann es auch vollendet werden, indem man ein Werkzeug wie NuSOAP verwendet. Das Zugänglich machen der SEIFE Antwort kann in vielem die gleiche Weise wie die REST-Antwort vollendet werden, wenn der Antrag manuell durchgeführt worden ist. Im Fall von den Anträgen, die mit NuSOAP durchgeführt werden, ist die Zugriffsmethode strukturell identisch, mit nur einigen geringfügigen Änderungen an der verwendeten Syntax.

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 SEIFE 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: 555 users browsing the articles directory