Med starten 2003 har WordPress växt upp från bara en bloggplattform till ett komplett innehållsförvaltningssystem. Under de senaste åren har det mognat tillräckligt för att tillgodose behovet av en stor majoritet av online-publiken och det är anledningen till att det ger mer än 20 procent av webben idag.
Med många nya funktioner som läggs till i WordPress, är en av de senaste tillägg-tilläggen REST API som tillåter andra appar och plattformar att interagera med WordPress. Det är ett revolutionerande tillägg som hjälper utvecklare att bygga anpassade applikationer och integrerade system med WordPress. Eftersom det ger möjlighet att lägga till och hämta innehåll från någon annan klient eller webbplats utan att behöva ha WordPress installerad på den webbplatsen tillåter det WordPress att användas med något programmeringsspråk eller plattform.
I den här flerpartiserien tar vi en titt på WP REST API och hur det kan användas för att skapa användarupplevelser som annars inte var omöjliga eller åtminstone svårt med WordPress. Vi ska först titta på grundläggande begrepp, inklusive REST och JSON, och sedan utforska alternativen som är tillgängliga för oss via WP REST API.
Nedan finns några resurser som jag hittade användbara för grundläggande begrepp, inklusive HTTP, REST och JSON. Jag rekommenderar dig starkt att ta en titt på dem om du inte redan har:
Innan vi börjar med vårt ämne, låt oss ta en kort titt på vad som verkligen är REST-arkitekturen och också bli bekant med sin gemensamma terminologi.
För att börja med ämnet, låt oss ta en titt på REST (Representations State Transfer) arkitektur och några av dess vanligaste begrepp. Att förstå dem är viktigt när man utvecklar applikationer som använder REST arkitektonisk stil.
REST är en arkitektonisk stil som hjälper till att skapa och organisera ett distribuerat system. Den beskriver webben som ett distribuerat hypermedia-program vars länkade resurser kommunicerar genom att utbyta representationer av resurs stat.
Resurser är huvudbyggstenarna i REST-arkitekturen. Faktum är att de är huvudbyggnadsblocken på webben i den utsträckning att webben ibland kallas "resursorienterad".
När du pratar om WordPress är dessa resurser diskreta enheter som inlägg, sidor, kommentarer, användare och anpassade posttyper etc. Att interagera med resurser, URI (Uniform Resource Identifier) används, och som namnet antyder är det en identifierare för en resurs.
En RESTful service behandlar URI som det primära sättet att adressera en underliggande resurs. Dessa resurser kan ha flera representationer. Till exempel kan en bildfil vara tillgänglig i .JPG-, .GIF- eller .PNG-format. Relationen mellan resurser och URI är en till många. En URI kan bara peka på en viss resurs, men en resurs kan ha mer än en URI.
Listan över alla resurser som för närvarande stöds av WP REST API är som nedan:
Vi kan utföra olika åtgärder på dessa resurser med hjälp av HTTP-verb.
En REST API tillåter i princip att utföra CRUD (Skapa Read Update Delete) -operationer på resurser med hjälp av HTTP. För detta ändamål använder REST en begränsad uppsättning HTTP-förfrågningsverken som är följande:
SKAFFA SIG
: Används för att läsa eller hämta en resursPOSTA
: Används för att skapa en ny resursSÄTTA
: Används för att uppdatera en resursRADERA
: Används för att radera en resursHUVUD
: Används för att kontrollera om en resurs existerar utan att återge sin representationALTERNATIV
: Används för att hämta alla verb som stöds av en resursI en RESTful tjänst har dessa verb en väldefinierad betydelse. De första fyra verben i listan ovan är en del av CRUD-åtgärder, dvs de hämtar, skapar, uppdaterar och raderar enheter. De två sista verben hjälper en klient att bestämma om en resurs finns och vilka HTTP-verb som är tillgängliga för att kunna utföra ytterligare operationer.
en SKAFFA SIG
förfrågan hämtar information och är idempotent, dvs en klient kan ringa det många gånger men det påverkar inte resursens tillstånd.
För att få alla inlägg med WP REST API använder vi följande slutpunkt:
GET wp / v2 / inlägg
Ovanstående ändpunkt kommer att returnera a samling av alla postenheter.
När följande slutpunkt utlöses returnerar den en viss entitet d.v.s. en post som har ett id på 100:
GET wp / v2 / inlägg / 100
en POSTA
begäran skapar en ny enhet och a SÄTTA
Förfrågan ersätter den enheten med en ny version.
Det följande POSTA
begäran kan användas för att skapa ett nytt inlägg (skicka längs den begäran som vi kommer att titta på i den senare delen av serien) med hjälp av WP REST API:
POST wp / v2 / inlägg
Och följande SÄTTA
begäran kommer att uppdatera ett inlägg med ett ID på 100:
PUT wp / v2 / inlägg / 100
en RADERA
förfrågan raderar en resurs från systemet. Denna typ av förfrågan, tillsammans med SÄTTA
Förfrågan är repeterbar, vilket betyder att det att ringa dessa metoder kommer att ha samma effekt på systemet. Till exempel, om du ringer a SÄTTA
begära flera gånger på en resurs (med samma argument) blir resultatet detsamma. Detsamma gäller för a RADERA
begäran. Att radera en resurs flera gånger kommer att ha samma effekt, dvs resursen kommer att raderas (eller ett fel skulle returneras om en redan borttagen resurs).
Förutom dessa CRUD-åtgärder ger en RESTful-tjänst två ytterligare verb som är ALTERNATIV
och HUVUD
. Dessa verb kommer att vara till nytta när en klient behöver kontrollera vilka resurser som finns tillgängliga på systemet och vilka åtgärder de stöder, vilket ger ett självdokumentande sätt för kunden att vidare utforska systemet och utföra handlingar. Vi kommer att se dessa två metoder i åtgärd senare i denna handledning.
Observera att i det första exemplet ovan använde vi följande slutpunkt:
GET wp / v2 / inlägg
Slutpunkter är funktioner som är tillgängliga via API: n och de utför flera åtgärder som att hämta inlägg (som vi gör ovan), skapa en ny användare eller uppdatera en postmeta. Alternativt kan vi säga att en slutpunkt utlöser en metod som utför en specifik uppgift. Dessa ändpunkter är beroende av det HTTP-verb som är associerat med dem. I ovanstående exempel använder vi GET-verbet för att hämta alla inlägg.
De rutt för ovanstående ändpunkt är följande:
wp / v2 / inlägg
En rutt är i princip ett namn för att komma åt ändpunkten. En rutt kan ha flera ändpunkter baserade på HTTP-verb. Så ovanstående rutt har följande ändpunkt för att skapa ett nytt inlägg:
POST wp / v2 / inlägg
Denna slutpunkt, när den utlöses med tillförda parametrar, skapar en ny postenhet.
Tänk på följande väg:
wp / v2 / inlägg / 100
Denna rutt pekar på postenheten med ett id på 100. Den har följande tre ändpunkter:
GET wp / v2 / inlägg / 100
: Vilka kan användas för att hämta inlägget med ett id på 100. Det utlöser get_item ()
metod.PUT wp / v2 / inlägg / 100
: Kan användas för att uppdatera inlägget med ett id på 100. Det utlöser update_item ()
metod.DELETE wp / v2 / inlägg / 100
: Den tar bort posten med ett ID på 100. Det utlöser radera sak()
metod.Vi lär oss mer om interneringarna i WP REST API, det är klassstrukturen och interna metoder i den sista delen av serien.
Låt oss nu uppdatera vår kunskap om några vanliga HTTP-svarskoder och vad de menar.
En server svarar på en förfrågan genom att returnera ett svar som innehåller en HTTP-statuskod. Dessa koder är nummer med fördefinierade betydelser associerade med dem. Till exempel skulle alla som använder webben vara bekanta med 404 statuskod som sammanfattar att resursen, användaren letade efter, inte hittades.
Serverns svar är också beroende av vilken typ av HTTP-verb eller metod vi använder i den skickade begäran, som vi kommer att se nästa.
Följande är några vanliga HTTP-svarskoder tillsammans med deras betydelser, som vi kommer att stöta på när vi arbetar med WP REST API och deras betydelser:
200 - OK
: Anger att begäran har slutförts och servern har returnerat svaret. Vanligtvis tillbaka efter en framgångsrik SKAFFA SIG
begäran.201 - Skapat
: Vanligtvis tillbaka efter en framgångsrik POSTA
begäran. Sammanfattar att resursen har skapats.400 Dålig Förfrågan
: Den returneras från servern när en förfrågan skickades med några saknade eller ogiltiga parametrar. Vanligtvis återvände som svar på POSTA
eller SÄTTA
förfrågningar.401 - Ej auktoriserad
: Anger att användaren inte var behörig att utföra vissa åtgärder. En användare försökte till exempel skapa eller ta bort en resurs utan att ge autentiseringsuppgifter.403 - Förbjudna
: Betyder att servern förstod begäran men vägrade att slutföra det på grund av autentisering. Det händer när en användare tillhandahåller autentiseringsuppgifter, men det har inte tillräckliga rättigheter att utföra åtgärden.404 Ej Hittad
: Den mest kända av alla statuskoder. Sammanfattar att en resurs som användaren letade efter inte hittades.405 - Metod ej tillåtet
: Anger att ett HTTP-verb som levereras i begäran inte stöddes av resursen. Ett exempel kan vara en användare som försöker uppdatera en skrivskyddad resurs.410 - Gone
: Betyder att en resurs har flyttats till en annan plats Ett exempel kan vara att försöka radera en redan borttagen resurs som har flyttats till papperskorgen.500 - Internt serverfel
: Den returneras när en server möter ett oväntat villkor och inte fyller i förfrågan.501 - Ej genomförd
: Anger att servern inte stöder funktionaliteten för att slutföra förfrågan. Vanligtvis uppstår när en server får en begäran metod som den inte känner igen.Vi kommer att undersöka dessa HTTP-verb och svarkoder närmare när vi faktiskt börjar arbeta med API. Men före det, låt oss ta en titt på orsakerna till att använda REST API med WordPress och de fördelar det ger både utvecklaren och användaren. När allt kommer omkring behöver jag dig att vara riktigt intresserad av att följa med mig under denna serie.
REST och JSON tillsammans ger en mekanism för att skapa kraftfulla applikationer med hjälp av WordPress back-end. De främsta exemplen är mobila appar som kräver utbyte av data mellan klienten (enheten) och servern. Med tanke på bandbreddsbegränsningarna vid användning av cellulär data, erbjuder JSON ett lättalternativ till XML-baserade lösningar.
Eftersom JSON är ett textbaserat format för lagring av data kan den användas sömlöst med majoriteten av programmeringsspråken. Därför fungerar JSON som en global kontakt när utbyte av data mellan olika plattformar som är lika läsbar av både maskiner och människor.
Med användningen av API som den som diskuteras är innehållet på din WordPress-webbplats inte begränsat till sig själv utan kan nås av andra webbplatser och klienter. Eftersom API avslöjar vissa delar av den interna funktionaliteten kan fjärrklienter interagera med din webbplats för att uppdatera eller skapa nytt innehåll. Det tillåter också att hämta lite innehåll från en befintlig WordPress-webbplats och visa den på en annan webbplats.
Med uppkomsten av JavaScript-ramar på klientsidan som Angular, Backbone eller Ember har det nu blivit möjligt att använda en av dessa för att skapa rika användarupplevelser medan de fortfarande använder WordPress back-end.
Med detta sagt är några möjliga användningsfall för WP REST API:
Det öppnar verkligen en ny värld av möjligheter där den enda gränsen är ens fantasi.
Innan JSON-baserade REST-API-er, används API som används för att fjärransluta med WordPress, XML-RPC API som fortfarande är en del av WordPress-kärnan. Problemet med XML är att det inte är lika lätt som JSON-format och dess tolkning är inte effektiv. Traversing XML är också en stor huvudvärk, medan ett JSON-objekt är lika enkelt som att hantera ett inbyggt JavaScript-objekt.
Det första pluginprogrammet för REST API som ska introduceras för WordPress var JSON API som släpptes 2009. Den byggdes på Museum of Modern Art för sin blogg Inside / Out. Den här bloggens front-end har drivits av Ruby on Rails, för att hämta inlägg från och lägga till kommentarer till WordPress-backenden, utvecklades ett API. Detta plugin ger gränssnitt för att hämta innehåll och skicka kommentarer till WP-backend. Även om det inte uppdaterats i mer än två år är det här pluginet fortfarande närvarande i det officiella förvaret och är upptagen.
Bortsett från pluginprogrammet JSON API har WordPress.com redan tillhandahållit JSON API via JetPack-plugin.
WP REST API, som vi känner till idag, är en funktion plugin som föreslogs av Ryan McCue som en del av GsoC (Google Summer of Code) 2013. Det är ännu inte inkluderat (helt) i WordPress-kärnan i en framtida release. Den nuvarande version 2.0 av pluginet är i beta-tillstånd och ingår delvis i WordPress-kärnan i version 4.4. Det är ett community driven projekt ledt av Ryan McCue och Rachel Baker. Den officiella arkivsidan för plugin finns på GitHub och den officiella dokumentationen finns på sin webbplats.
Som nämnts ovan är WP REST API för närvarande i plugin-tillstånd och utvecklas aktivt på GitHub. Det har delvis ingått i WordPress-kärnan i version 4.4 och Ryan har beskrivit planen i sitt sammanfogningsförslag på WordPress.org.
Enligt sammanslagningsförslaget skulle WP REST API inkorporeras i WP-kärnan i två steg som beskrivs nedan:
Enligt förslaget kommer endast infrastrukturnivån att slås samman i WP-kärnan i utgåvan 4.4 i början. Denna infrastrukturkod är den faktiska basen för WP REST API, eftersom den innehåller JSON serialisering / deserialisering, länkning, inbäddning och det viktigaste av allt - routingsskiktet som driver API: n. Denna kod innehåller inte slutpunkter och deras kontroller klasser, men det ger en bas för att bygga API: er inne i WordPress.
I skrivande stund har detta tillstånd slutförts och infrastrukturkoden har slås samman i WordPress-kärnan i version 4.4.
Slutpunkterna för inlägg, sidor, användare och taxonomier etc. kommer att inkorporeras i WP-kärnan i utgåvan 4.5, dvs en släppning senare än infrastrukturkodssamlingen. Slutpunkterna är det som gör API: n användbart för allmänna kunder. De innehåller mycket komplexitet, inklusive kartläggning av externa data i JSON-format till inbyggda WordPress datatyper och vice versa. De står för den två tredjedelskoden för API: n själv med cirka 5500 linjer.
Strategin här är att bygga utvecklarens förtroende för API: n genom att först tillhandahålla infrastrukturkoden i kärnan. Detta skulle göra det möjligt för temat och plugin-utvecklare att skapa anpassade API-skivor som ingår i deras teman och plugins. Men eftersom slutpunkter inte kommer att ingå i detta skede, skulle detta initialt begränsa användbarheten av API: n.
Klyftan mellan de två utgåvorna skulle ge WP-kärnkommittégruppen tillräckligt med tid för att granska API-ändpunkterna.
En annan fördel som WP REST API skulle ge till WordPress-community är användningen av GitHub i version som styr projektet. Eftersom alla bidrag till WordPress görs genom SVN och Trac är WP REST API-teamet helt övertygat om att förbättra bidragsprocessen genom att överbrygga klyftan mellan Trac och GitHub.
Efter sammanslagningen av API: n i kärnan kan vi hoppas att vi ser en snabb utveckling inom andra områden, inklusive OAuth 1.0a-autentisering.
För att börja testa med WP REST API behöver vi en HTTP-klient som ska användas för att skicka förfrågningar till servern och se svaret. Det är verkligen en fråga om ditt val men jag använder Postman för Google Chrome under den här serien. Andra alternativ till Postman är:
Postman tillåter oss att skapa snabba HTTP-förfrågningar med olika metoder, se svaret från servern och testkonfigurationen för autentisering. Alla dessa funktioner kommer att vara mycket praktiska när du arbetar med WP REST API.
Nästa sak som vi behöver ha på vår server är WP-CLI. Med WP-CLI kan vi fjärrstyra vår WordPress-installation från konsolen utan att behöva öppna webbläsarfönstret. Vi måste använda WP-CLI i nästa del av denna serie när du installerar OAuth 1.0a-autentisering. Du hittar installationsanvisningarna på den officiella webbplatsen.
Förutom en HTTP-klient och WP-CLI behöver vi också demodata för vår WordPress-installation. Jag föreslår att du checkar ut Tema Enhetstest (XML) eller Demo Data Creator-plugin som tillåter att skapa flera inlägg, sidor och användare.
Vid skrivning av denna handledning är den nuvarande stabila versionen 1.2.2 som finns på det officiella förvaret. I den här serien kommer vi att arbeta med version 2.0, eftersom det har skrivits om från grunden och innehåller många brytande förändringar. Du kan ta tag i version 2 beta från sin officiella plugin-sida eller från sitt GitHub-arkiv.
Observera att det inte rekommenderas att installera aktuell beta i din produktionsmiljö. Jag har skapat en lokal WordPress-miljö och jag rekommenderar att du gör det för utveckling och teständamål.
För att installera plugin från GitHub-förvaret, öppna din terminal och dra pluggen efter att ha gått in i din / Wp-content / plugins / katalogen:
$ git dra https://github.com/WP-API/WP-API.git
Pluggen kommer att laddas ner i / WP-API / katalog.
Du kan aktivera den från din WordPress-administratör för att fortsätta att testa med den.
För att WP REST API-plugin ska fungera måste du aktivera ganska permalink med WordPress. Det antas här att du redan vet att utföra denna grundläggande åtgärd. Om du inte gör det, har inga bekymmer som WordPress.org fått dig täckt.
När plugin har installerats kan vi bedöma tillgängligheten av API på vår server. Vi är inte begränsade till att använda API-en bara på vår webbplats, i själva verket använder vi den på en webbplats som har den installerad och aktiverad. För att söka efter API på andra webbplatser kan vi skicka en HEAD-förfrågan till webbplatsen som följande med din HTTP-klient:
$ HEAD http://someothersite.com/
Detta kommer att returnera något som följer i svarhuvudet:
De Länk
header pekar på root-rutten för WP API som i vårt fall är följande:
http: // localserver / wordpress-api / wp-json /
API kan också upptäckas via JavaScript i webbläsaren (eller jQuery) genom att fråga DOM för det lämpliga element som följande:
(funktion ($) var $ link = $ ('länk [rel = "https://github.com/WP-API/WP-API"]'; var api_root = $ link.attr ('href') ;) (jQuery);
Härifrån kan vi börja hämta innehållet från webbplatsen via WP REST API. Observera att endast autentiserade förfrågningar kan redigera eller uppdatera innehållet på webbplatsen och jag sparar ämnet att ställa in autentisering för de kommande två delarna av denna serie.
I denna inledande del av serien lärde vi oss ganska mycket om REST-arkitekturen, WP REST API och HTTP själv. Vi tittade först på grundläggande begrepp som REST-arkitekturen är och hur det kan hjälpa utvecklare att skapa bättre applikationer. Då lärde vi oss om HTTP, dess verb och svarstyper. Vi tittade också på kort historia om API i WordPress och hur WP REST API skiljer sig från sina föregångare.
I den sista delen av denna handledning installerade vi pluginprogrammet från GitHub. Därefter bekantade vi oss med a HUVUD
begäran som kan användas för att bestämma tillgängligheten för API-en på vår server samt på andra servrar.
Med den grundläggande arbetsmiljön är vi redo att arbeta med de funktioner som WP REST API tillhandahåller. I nästa del av serien ser vi på sätt att skapa autentiseringsmetoder som stöds av API: n. Dessa autentiseringsmetoder kommer att krävas när du skickar begäran för att hämta, skapa, uppdatera eller radera innehåll. Så håll dig stillad.