U ovom ću blog postu pokazati kako omogućiti korištenje WordPress REST API-ja sa CRUD (Create, Read, Update, Delete) mogućnostima dok za neki od sljedećih blog postova planiram napraviti jednostavnu Ionic aplikaciju koja će koristiti ovdje kreiran API.
Dokumentacija koju koristim za ovaj blog post: REST API Handbook
Uvod
Za početak je važno znati da autentifikacija nije isto što i autorizacija. U ovom blog postu govorit ćemo o autentifikaciji koja označava proces provjere točnosti pristupnih podataka korisnika koji traži pristup određenom sustavu. To znači da autentificirani korisnik može izvršavati CRUD operacije uz uvjet da pri svakom zahtjevu pošalje “dokaz” o valjanosti pristupnih podataka.
S druge strane, autorizacija identificira i dodjeljuje pristup resursima sustava. U slučaju WordPressa to možete vidjeti kroz različite uloge koje je moguće zadati korisnicima: pretplatnik, suradnik, autor, urednik, administrator. Vidjet ćete i kasnije da prilikom korištenja API-ja autor neće moći npr. promijeniti parametre nekog blog posta dok će urednik ili administrator to moći.
Priprema
Za pripremu su potrebni:
- JSON Auth plugin https://github.com/WP-API/Basic-Auth
- Korisnik s kojim ćemo vršiti autentifikaciju
Osnovna autentifikacija (Basic authentication) podrazumijeva slanje korisničkog imena i lozinke u zaglavlju (header) svakog zahtjeva (request).
Kako bi uopće omogućili osnovnu provjeru autentičnosti potrebno je instalirati plugin Basic Authentication handler (https://github.com/WP-API/Basic-Auth).
Sada ćemo kreirati korisnika čije ćemo pristupne podatke (korisničko ime: TestKorisnik, lozinka: OvoJeLozinka) koristiti u zaglavlju svih zahtjeva koje ćemo slati.
Sada smo spremni i možemo testirati slanje zahtjeva koristeći Postman (A complete API Development Environment).
Kreiranje blog posta (POST /wp/v2/posts)
Za kreiranje novog blog posta potrebni su:
- URL na koji ćemo slati zahtjev
- Korisničko ime i lozinka
- Tijelo poruke (naslov, sadržaj i dr.)
Kao što se može vidjeti iz prethodne animacije scenarij je sljedeći.
– Zahtjev za kreiranjem novog blog posta šaljemo na URL “…/wp-json/wp/v2/posts/”
– Koristimo korisničko ime “TestKorisnik” i lozinku “OvoJeLozinka” koji se pretvaraju u base64 string oblika “Basic VGVzdhaXMuYWxhbUBjbG91ZHdheXMuY29tOmVKNWtuU24zNVc=” koji ide u zaglavlje zahtjeva.
– S obzirom da se ovdje radi o kreiranju novog blog posta uz zaglavlje šaljemo i tijelo (body) poruke koje se sastoji od dvije stavke, naslova i statusa.
– Na kraju dobijemo status 201 što znači da je blog post uspješno kreiran što se može vidjeti unutar sučelja WordPressa.
Uređivanje blog posta (POST /wp/v2/posts/id)
Za uređivanje postojećeg blog posta potrebni su:
- URL na koji ćemo slati zahtjev
- ID blog posta kojeg želimo urediti
- Korisničko ime i lozinka
- Tijelo poruke (neki od parametara)

Kao što se može vidjeti iz prethodne animacije scenarij je sljedeći.
– Zahtjev za kreiranjem novog blog posta šaljemo na URL “…/wp-json/wp/v2/posts/id”
– Koristimo korisničko ime “TestKorisnik” i lozinku “OvoJeLozinka” koji se pretvaraju u base64 string oblika “Basic VGVzdhaXMuYWxhbUBjbG91ZHdheXMuY29tOmVKNWtuU24zNVc=” koji ide u zaglavlje zahtjeva.
– S obzirom da se ovdje radi o uređivanju postojećeg blog posta uz zaglavlje šaljemo i tijelo (body) poruke koje se može sastojati od nekoliko parametara. Konkretno u ovom primjeru promijenit ćemo autora i kategoriju blog posta.
– Na kraju dobijemo status 200 što znači da je blog post uspješno uređen što se može vidjeti unutar sučelja WordPressa.
Vratimo se nakratko na pitanje autorizacije. Kada sam u jednom od prethodnih koraka kreirao korisnika “TestKorisnik” stavio sam mu ulogu “Autor” međutim korisnik s tom ulogom nema sva prava i nije u mogućnosti izvršiti gore navedenu radnju jer dobije poruku sa statusom 403.
1 2 3 4 5 6 7 |
{ "code": "rest_cannot_edit_others", "message": "Nemate dopuštenje ažurirati objave u ulozi ovog korisnika", "data": { "status": 403 } } |
Međutim, kada sam mu dodijelio ulogu “Urednik” korisnik je bez problema mogao putem API-ja izvršiti uređivanje blog posta.
Brisanje blog posta (DELETE /wp/v2/posts/id)
Za brisanje postojećeg blog posta potrebni su:
- URL na koji ćemo slati zahtjev
- ID blog posta kojeg želimo urediti
- Korisničko ime i lozinka
Kao što se može vidjeti iz prethodne animacije scenarij je sljedeći.
– Zahtjev za brisanjem postojećeg blog posta šaljemo na URL “…/wp-json/wp/v2/posts/id”
– Koristimo korisničko ime “TestKorisnik” i lozinku “OvoJeLozinka” koji se pretvaraju u base64 string oblika “Basic VGVzdhaXMuYWxhbUBjbG91ZHdheXMuY29tOmVKNWtuU24zNVc=” koji ide u zaglavlje zahtjeva.
– Na kraju dobijemo status 200 što znači da je blog post uspješno obrisan što se može vidjeti unutar sučelja WordPressa.
Dohvaćanje svih blog postova (GET /wp/v2/posts)
Za dohvaćanje svih blog postova potreban je samo URL na koji će se slati zahtjev.
Dohvaćanje jednog blog posta (GET /wp/v2/posts/id)
Za dohvaćanje jednog blog posta potrebni su:
- URL na koji ćemo slati zahtjev
- ID blog posta kojeg želimo prikazati
- Korisničko ime i lozinka