Een blik op de WordPress HTTP API een beknopt overzicht van wp_remote_get

Als het gaat om het maken van externe aanvragen in de context van websites, webapplicaties en zelfs op WordPress gebaseerde projecten, is het model dat we volgen over het algemeen hetzelfde:

  • Start een verzoek aan de serverzijde
  • Behandel het antwoord wanneer het wordt opgehaald door het antwoord te lezen of de fout te achterhalen
  • Stuur het antwoord terug naar de beller

Dit specifieke formaat is hetzelfde dat wordt gebruikt in zowel synchrone als asynchrone (of Ajax-gebaseerde) functionaliteit. Het probleem is dat als je een standaard webtoepassing bouwt met PHP, Rails, Java, .NET of een ander platform, ze elk hun eigen manier hebben om het te doen.

Hetzelfde geldt voor WordPress; Als u echter met WordPress werkt, werkt u ook met PHP, wat betekent dat u mogelijk PHP-functies gebruikt in plaats van specifieke WordPress-API's.

In deze vierdelige serie gaan we kijken wat het betekent om een ​​afstandsbediening te maken KRIJGEN verzoek, en in het tweede deel gaan we kijken naar een praktische benadering om dit te doen.

Dan in de laatste twee artikelen, gaan we kijken naar de argumenten die wp_remote_get aanvaardt evengoed als wat u kunt accepteren van een reactie van de server wanneer een aanvraag is voltooid. Uiteindelijk moeten we een volledig begrip hebben van de API van deze methode en ook hoe we kwaliteit en defensieve code moeten schrijven wanneer we deze in onze projecten implementeren..

Maar laten we eerst een overzicht maken van wat het betekent om een ​​verzoek in te dienen.


Wat is een verzoek op afstand?

Eenvoudig gedefinieerd, een verzoek op afstand is wanneer een server een aanvraag doet bij een andere server. Dit kan verschillende vormen aannemen - soms verzendt het gegevens, soms is het eenvoudig polling om te zien of de server beschikbaar is en soms vraagt ​​het data.

In deze specifieke reeks artikelen gaan we kijken naar wat het betekent verzoek gegevens van een andere server. Maar eerst, hier is hoe u een server conceptueel kunt modelleren om met een ander te praten, een aanvraag te doen en de gegevens vervolgens te verwerken:

Makkelijk genoeg om te begrijpen, goed?

Voor de gevorderde ontwikkelaars die dit lezen, weet je dat hier een aantal geavanceerde onderwerpen kunnen worden behandeld - misschien moet er verificatie plaatsvinden (zoals het gebruik van sleutels en / of tokens), en je weet dat de reactie niet altijd zal plaatsvinden zo duidelijk zijn als wat wordt gedefinieerd - maar de waarheid is dat als je het proces vanuit een abstract gezichtspunt bekijkt, dit is wat je uiteindelijk ziet.


Hoe worden verzoeken gemaakt in PHP?

Dit verschilt van applicatie tot applicatie, maar zoals eerder in dit artikel vermeld, zijn we voornamelijk gefocust op PHP en WordPress en dus maakt de manier waarop verzoeken doorgaans binnen PHP worden gedaan gebruik van een van de twee functies:

  • file_get_contents
  • Krul

Beide kunnen worden gebruikt voor verzoeken op afstand, maar de ene is wat flexibeler dan de andere.

file_get_contents

In wezen, file_get_contents accepteert een string - in feite een URL - en zal de gevraagde gegevens retourneren (of fout bij een fout).

Dit is misschien wel de meest gebruikelijke manier waarop beginnende ontwikkelaars externe verzoeken zullen doen. Eerlijk gezegd deed ik dit vaak - en nog steeds, afhankelijk van de vereisten van de webapplicatie - maar dat is een onderwerp voor een andere reeks.

De details over file_get_contents kan worden gelezen in de PHP-handleiding. Hoewel we de WordPress-manier bekijken om externe verzoeken te doen, raad ik aan om deze specifieke API te bekijken, gewoon om bekend te zijn met wat het biedt.

Krul

cURL - vaak geschreven curl - is een afkorting van de 'client URL-bibliotheek'. Net zoals de naam vermeldt, is dit een hele bibliotheek - versus een functie - die ontwikkelaars een volledige reeks functies biedt voor het maken van verzoeken op afstand.

Naast het eenvoudig opvragen van gegevens van een externe URL, kunt u parameters instellen zoals:

  • Hoe omgaan met foutnummers
  • Krijg informatie over een specifieke overdracht
  • Een sessie starten, uitvoeren of sluiten
  • Wacht op activiteit op een specifieke verbinding
  • … en meer

Uiteraard is dat zo veel om te leren en veel doorgaan met deze specifieke bibliotheek.

Persoonlijk ben ik een fan van het gebruik als je een geavanceerde ontwikkelaar bent Krul in de context van PHP-gebaseerde webapplicaties voor het robuuste niveau van controle dat het biedt.

Als u niet bekend bent met deze bibliotheek, raad ik u aan deze in de PHP-handleiding te lezen.


Hoe worden verzoeken gedaan in WordPress?

Natuurlijk, zoals vermeld in het artikel, file_get_contents en Krul zijn belangrijk om te weten in PHP en worden vaak gebruikt in de context van WordPress-projecten; echter, daar is een voorkeursfunctie om te gebruiken in WordPress.

Vergeet niet dat, net zoals we naar de coderingsstandaarden van WordPress hebben gekeken om te begrijpen hoe we het best op WordPress gebaseerde code kunnen schrijven, we ook naar de beschikbare API's moeten kijken om ervoor te zorgen dat we dingen doen zoals WordPress aanbeveelt.

Dus als het gaat om maken KRIJGEN verzoeken voor WordPress, de functie die we beschikbaar hebben voor ons is wp_remote_get.

De functie accepteert twee argumenten:

  • De URL waarnaar het verzoek wordt gedaan
  • De reeks argumenten om mee te sturen met het verzoek

De reeks argumenten valt een beetje buiten het bereik van dit specifieke artikel; Het bijbehorende Codex-artikel biedt echter een korte samenvatting van wat we precies met ons verzoek kunnen verzenden.

Enkele voorbeelden zijn:

  • Hoe lang voordat de tijd verstrijkt
  • De versie van het HTTP-protocol dat moet worden gebruikt
  • headers
  • koekjes
  • … en meer

Ten slotte vraagt ​​de functie om een ​​volledige array van gegevens zodra het antwoord is verzonden. Bijvoorbeeld:

  • De headers van de server waarnaar het verzoek is gedaan
  • Het inhoudstype van het antwoord
  • De feitelijke reactie
  • … en meer.

We zullen meer praten over de reactie in het derde artikel in deze serie.

Het is duidelijk dat de functie het gemakkelijkst te begrijpen is, maar het is echt krachtig. Voor degenen die nieuwsgierig zijn, maakt een deel van de WordPress HTTP API (waar deze functie deel van uitmaakt) de cURL-bibliotheek intern aan.


Laten we een verzoek doen

Dat gezegd hebbende, het initiëren van een verzoek bij wp_remote_get is echt gemakkelijk. In feite gaan we precies dat doen in het volgende artikel in de serie.

Concreet gaan we kijken hoe eenvoudig het is om te communiceren met Twitter, gegevens te ontvangen en deze vervolgens in de browser weer te geven. Het leuke is dat we zelfs geen OAuth-authenticatie of andere bibliotheken hoeven te gebruiken.

We zullen gebruiken wp_remote_get, behandel het antwoord op de juiste manier en geef de informatie vervolgens weer op het scherm.