En titt på WordPress HTTP API En kort oversikt over wp_remote_get

Når det gjelder å gjøre eksterne forespørsler innenfor rammen av nettsider, webapplikasjoner og til og med WordPress-baserte prosjekter, er modellen vi følger vanligvis det samme:

  • Start en forespørsel på server-siden
  • Behandle svaret når det hentes enten ved å lese svaret eller fange feilen
  • Gi svaret til den som ringer tilbake

Dette bestemte formatet er det samme som brukes i både synkron og asynkron (eller Ajax-basert) funksjonalitet. Saken er, hvis du bygger et standard webprogram ved hjelp av PHP, Rails, Java, .NET eller en hvilken som helst annen plattform, så har de hver sin måte å gjøre det på..

Det samme gjelder for WordPress; Men hvis du jobber med WordPress, jobber du også med PHP, noe som betyr at du kan utnytte PHP-funksjoner i stedet for bestemte WordPress API-er.

I denne fire delserien skal vi se på hva det betyr å lage en fjernkontroll forespørsel, og i den andre delen skal vi ta en titt på en praktisk tilnærming til å gjøre det.

Så i de to siste artiklene skal vi se på argumentene som wp_remote_get aksepterer så vel som hva du kan akseptere fra et svar fra serveren når en forespørsel er fullført. Til slutt bør vi ha en full forståelse av API-metoden for denne metoden, samt hvordan du skriver kvalitet og defensiv kode når du implementerer den i våre prosjekter.

Men først, la oss ta en oversikt over hva det til og med betyr å gjøre en forespørsel.


Hva er en ekstern forespørsel?

Enkelt definert, en ekstern forespørsel er når en server gjør en forespørsel til en annen server. Dette kan ta flere former - noen ganger sender den data, noen ganger er det bare polling for å se om serveren er tilgjengelig, og noen ganger ber det om data.

I denne spesielle serien av artikler skal vi se på hva det betyr å be om data fra en annen server. Men først, hvordan kan du konseptuelt modellere en server til å snakke med en annen, lage en forespørsel, og deretter håndtere dataene:

Lett nok å forstå, riktig?

For de avanserte utviklerne som leser dette, vet du at det kan være noen avanserte emner som dekker her - kanskje autentisering må oppstå (for eksempel bruk av nøkler og / eller tokens), og du vet at svaret ikke alltid vil være så tydelig kuttet som det som er definert - men sannheten er at hvis du ser på prosessen fra et abstrakt synspunkt, er dette det du ender med å se.


Hvordan blir forespørsler gjort i PHP?

Dette varierer fra søknad til applikasjon, men som tidligere nevnt i denne artikkelen er vi primært fokusert på PHP og WordPress, og slik måten som forespørsler vanligvis gjøres innen PHP, bruker en av to funksjoner:

  • file_get_contents
  • curl

Begge kan brukes til eksterne forespørsler, men en er litt mer fleksibel enn den andre.

file_get_contents

I bunn og grunn, file_get_contents aksepterer en streng - i utgangspunktet en URL - og returnerer dataene som er forespurt (eller feil på feil).

Dette er uten tvil den vanligste måten at nybegynnerutviklere vil gjøre eksterne forespørsler. Sannheten blir fortalt, jeg pleide å gjøre dette mye - og fortsatt gjør, avhengig av kravene til webapplikasjonen - men det er et emne for en annen serie.

Detaljer om file_get_contents kan leses i PHP manualen. Selv om vi skal ta en titt på WordPress-måten å gjøre eksterne forespørsler, anbefaler jeg at du sjekker ut denne APIen bare for å være kjent med hva den tilbyr.

cURL

cURL - ofte skrevet krøll - er kort for "klientens URL-bibliotek". Akkurat som navnet nevner, er dette et helt bibliotek - i motsetning til en funksjon - som gir utviklere et komplett sett med funksjoner for å gjøre eksterne forespørsler.

I tillegg til å bare be om data fra en tredjeparts URL, kan du angi parametere som:

  • Slik håndterer du feilnumre
  • Få informasjon om en bestemt overføring
  • Start, utfør eller lukk en økt
  • Vent på aktivitet på en bestemt tilkobling
  • … og mer

Det er åpenbart at det er mye å lære og mye fortsetter med dette bestemte biblioteket.

Personlig, hvis du er en avansert utvikler, er jeg fan av å bruke cURL i sammenheng med PHP-baserte webapplikasjoner for det robuste kontrollnivået som det tilbyr.

Hvis du ikke er kjent med dette biblioteket, anbefaler jeg at du leser det i PHP-håndboken.


Hvordan blir forespørsler gjort i WordPress?

Selvfølgelig, som nevnt i hele artikkelen, file_get_contents og cURL er viktig å vite i PHP og brukes ofte i forbindelse med WordPress-prosjekter; imidlertid der er en foretrukket funksjon som skal brukes innen WordPress.

Husk, akkurat som vi har sett på WordPress Coding Standards for å forstå hvordan du best skriver WordPress-basert kode, må vi også se på APIene som er tilgjengelige for oss, for å sikre at vi gjør ting slik WordPress anbefaler.

Så når det gjelder å lage forespørsler om WordPress, funksjonen som vi har tilgjengelig for oss er wp_remote_get.

Funksjonen godtar to argumenter:

  • Nettadressen som forespørselen gjøres til
  • Utvalget av argumenter for å sende sammen med forespørselen

Utvalget av argumenter er litt utenfor omfanget av denne spesielle artikkelen; Den tilhørende Codex-artikkelen gir imidlertid en rask lesning for nøyaktig hva vi kan sende sammen med vår forespørsel.

Noen eksempler inkluderer:

  • Hvor lenge før timing ut
  • Den versjonen av HTTP-protokollen som skal brukes
  • overskrifter
  • kjeks
  • … og mer

Endelig vil funksjonen be om en hel rekke data når svaret er sendt. For eksempel:

  • Overskriftene fra serveren som forespørselen ble gjort til
  • Innholdstypen av svaret
  • Den faktiske responsen
  • … og mer.

Vi snakker mer om svaret i den tredje artikkelen i denne serien.

Åpenbart er funksjonen enklest nok å forstå, men det er veldig kraftig. For de som er nysgjerrige, bruker en del av WordPress HTTP API (som denne funksjonen er en del av) kURL-biblioteket internt.


La oss lage en forespørsel

Når det er sagt, starter en forespørsel med wp_remote_get er veldig enkelt. Faktisk skal vi bare gjøre det i neste artikkel i serien.

Spesielt skal vi se på hvor enkelt det er å kommunisere med Twitter, motta data, og deretter vise det i nettleseren. Det fine er at vi ikke engang må bruke OAuth-autentisering eller andre biblioteker.

Vi skal bruke wp_remote_get, Behandle svaret på riktig måte, og deretter vise informasjonen på skjermen.