Unser Kunde hatte mir eine REST-API gegeben, bei der ich einen PHP-Aufruf durchführen muss. Tatsächlich ist die mit der API bereitgestellte Dokumentation jedoch sehr begrenzt, sodass ich nicht wirklich weiß, wie ich den Dienst aufrufen soll.
Ich habe versucht, es zu googeln, aber das einzige, was auftauchte, war ein bereits abgelaufenes Yahoo! Tutorial zum Aufrufen des Dienstes. Ganz zu schweigen von den Überschriften oder detaillierten Informationen.
Gibt es anständige Informationen zum Aufrufen einer REST-API oder eine Dokumentation dazu? Denn auch in W3-Schulen wird nur die SOAP-Methode beschrieben. Welche verschiedenen Optionen gibt es, um eine Rest-API in PHP zu erstellen?
quelle
$data
ist ein assoziatives Array (data [fieldname] = value), das die an die API-Methode gesendeten Daten enthält.curl_close
Funktion nicht aufgerufen wird. Dies kann zu einem zusätzlichen Speicherverbrauch führen, wenn die CallAPI-Funktion wiederholt aufgerufen wird.Wenn Sie eine URL haben und Ihr PHP diese unterstützt, können Sie einfach file_get_contents aufrufen:
Wenn $ response JSON ist, verwenden Sie json_decode, um es in ein PHP-Array umzuwandeln:
Wenn $ response XML ist, verwenden Sie die Klasse simple_xml:
http://sg2.php.net/manual/en/simplexml.examples-basic.php
quelle
file_get_contents
schlägt die Funktion mit einer Warnung fehl und gibt null zurück. Wenn der Text eine Fehlermeldung enthält, können Sie diese nicht abrufen.Verwenden Sie Guzzle . Es handelt sich um einen "PHP-HTTP-Client, der die Arbeit mit HTTP / 1.1 vereinfacht und das Konsumieren von Webdiensten erleichtert". Die Arbeit mit Guzzle ist viel einfacher als die Arbeit mit cURL.
Hier ist ein Beispiel von der Website:
quelle
CURL ist der einfachste Weg. Hier ist ein einfacher Anruf
quelle
Verwenden Sie HTTPFUL
Httpful ist eine einfache, verkettbare und lesbare PHP-Bibliothek, die das Sprechen von HTTP vernünftig machen soll. Der Entwickler kann sich auf die Interaktion mit APIs konzentrieren, anstatt die Seiten von curl set_opt zu durchsuchen, und ist ein idealer PHP-REST-Client.
Httpful beinhaltet ...
Ex.
Senden Sie eine GET-Anfrage. Erhalten Sie automatisch analysierte JSON-Antworten.
Die Bibliothek bemerkt den JSON-Inhaltstyp in der Antwort und analysiert die Antwort automatisch in ein natives PHP-Objekt.
quelle
$condition = $response->weather[0]->main;
sei denn, ich mache nur die PHP-Seite falschSie müssen wissen, ob die von Ihnen aufgerufene REST-API
GET
oderPOST
oder beide Methoden unterstützt. Der folgende Code funktioniert für mich. Ich rufe meine eigene Webdienst-API auf, sodass ich bereits weiß, was die API benötigt und was sie zurückgibt. Es unterstützt sowohlGET
als auchPOST
Methoden, so dass die weniger vertraulichen Informationen in die gehenURL (GET)
und die Informationen wie Benutzername und Passwort alsPOST
Variablen übergeben werden. Auch geht alles über dieHTTPS
Verbindung.Innerhalb des API-Codes
echo $my_json_variable
codiere ich ein Array, das ich in das JSON-Format zurückgeben möchte, und verwende dann einfach den PHP-Befehl , um diese JSON-Zeichenfolge für den Client verfügbar zu machen.Wie Sie sehen können, gibt meine API JSON-Daten zurück, aber Sie müssen wissen (oder die zurückgegebenen Daten überprüfen, um herauszufinden), in welchem Format die Antwort von der API vorliegt.
So verbinde ich mich von der Clientseite aus mit der API:
Übrigens habe ich auch versucht, die
file_get_contents()
Methode zu verwenden , wie einige der Benutzer hier vorgeschlagen haben, aber das funktioniert bei mir nicht gut. Ich fand heraus, dass diecurl
Methode schneller und zuverlässiger ist.quelle
Es gibt tatsächlich viele Kunden. Eines davon ist Pest - probieren Sie es aus. Beachten Sie auch, dass es sich bei diesen REST-Aufrufen um einfache http-Anforderungen mit verschiedenen Methoden handelt: GET, POST, PUT und DELETE.
quelle
Sie können zusätzlich zur Methode, wie der Funktionsname andeutet,
file_get_contents
beliebige http-POST/PUT/DELETE/OPTIONS/HEAD
Methoden ausgebenGET
.Wie poste ich Daten in PHP mit file_get_contents?
quelle
Wenn Sie Symfony verwenden, gibt es ein großartiges Rest-Client-Bundle, das sogar alle ~ 100 Ausnahmen enthält und diese auslöst, anstatt einen bedeutungslosen Fehlercode + eine Nachricht zurückzugeben.
Sie sollten es wirklich überprüfen: https://github.com/CircleOfNice/CiRestClientBundle
Ich liebe die Schnittstelle:
Funktioniert für alle http-Methoden.
quelle
Wie @Christoph Winkler erwähnte, ist dies eine Basisklasse, um dies zu erreichen:
curl_helper.php
Dann können Sie die Datei jederzeit einschließen und verwenden, z. B.: Any.php
quelle
Wenn Sie offen sind, Tools von Drittanbietern zu verwenden, sehen Sie sich diese an: https://github.com/CircleOfNice/DoctrineRestDriver
Dies ist eine völlig neue Art, mit APIs zu arbeiten.
Zunächst definieren Sie eine Entität, die die Struktur eingehender und ausgehender Daten definiert, und kommentieren sie mit Datenquellen:
Jetzt ist es ziemlich einfach, mit der REST-API zu kommunizieren:
quelle
Sie können mit POSTMAN arbeiten, einer Anwendung, die APIs einfach macht. Füllen Sie die Anforderungsfelder aus und es wird Code für Sie in verschiedenen Sprachen generiert. Klicken Sie einfach auf den Code auf der rechten Seite und wählen Sie Ihre bevorzugte Sprache aus.
quelle