An allen Enden und Ecken lauern heutzutage so genannte Application Programming Interfaces, kurz: APIs. Sie können auf vielfältige Art und Weise genutzt werden. Zum Beispiel um Geld via Paypal zu transferieren oder um die letzten Beiträge aus dem eigenen Facebook-Stream zu lesen.
Die eigentliche HTTP-API wurde in der Version 2.7.0 eingeführt und standardisiert. In späteren Versionen kamen immer mehr und mehr Funktionen hinzu. Zum Beispiel Komprimierung, Cookie- und Proxy-Support.
Die HTTP-API unterstützte vormals drei verschiedene Methoden um Daten aus dem Internet zu empfangen oder dort hin zu senden. Diese waren:
- Curl
Nutzte die PHP-Curl-Funktionen: https://www.php.net/manual/de/ref.curl.php - Streams
Nutzt die PHP Streaming Funktionen: https://www.php.net/manual/de/ref.stream.php - Fsockopen
Nutzte die PHP Netzwerk-Funktionen: https://www.php.net/manual/de/ref.network.php
Darüber hinaus gäbe es natürlich noch:
- fopen
Falls in der php.iniallow_url_fopen
gesetzt wurde: https://www.php.net/manual/de/function.fopen.php
Die Klasse WP_HTTP_Fsockopen
wurde jedoch in Version 3.7.0. in die Klasse WP_HTTP_Streams
integriert (bzw. eigentlich entfernt) und besteht heute nur noch aus Gründen der Kompatibilität.
In Version 4.6 hat die HTTP-API eine große Überarbeitung erfahren1. So wurde der komplett eigens geschriebene Unterbau entfernt und die unabhängige Requests Library in WordPress integriert.
Ein großer Missstand ist, dass nicht jede Webserver-Konfiguration alle Transportmöglichkeiten unterstützt. Auch unterschiedliche PHP-Versionen oder engere Sicherheitseinstellungen machen oft Probleme. So kann es vorkommen, dass die Curl-Funktionen von PHP auf einem Webserver einfach nicht vorhanden sind. Jeder Plugin-Programmierer musste deswegen immer mehrere Methoden selbst integrieren, was natürlich ein großer Aufwand wäre.
Die HTTP-API von WordPress hat für eine Standardisierung gesorgt. Nun können mit einer Handvoll Funktionen, Anfragen gesendet und empfangen werden ohne im Hintergrund die genaue Funktionsweise zu kennen.
Ein weiterer Vorteil bei der Nutzung der HTTP-API ist, dass vieles schon vorkonfiguriert ist. Sie können die Funktionen mit minimalen Parametern aufrufen und sie funktionieren trotzdem.
- HTTP API in 4.6. https://make.wordpress.org/core/2016/07/27/http-api-in-4-6/ ↩︎