Preskoči na sadržaj
Pustili smo novi sajt sa mnogo novih opcija — AI Builder uskoro
BeoHosting
BeoHosting
Tehničko

Vodič za WordPress REST API

BeoHosting Tim··10 min čitanja
Vodič za WordPress REST API

Šta je WordPress REST API

WordPress ekosistem REST API je interfejs koji omogućava eksternim aplikacijama da komuniciraju sa WordPress sajtom putem HTTP zahteva. Umesto da pristupate sadržaju kroz WordPress frontend ili admin panel, REST API vam omogućava da čitate, kreirate, ažurirate i brišete sadržaj programski, koristeći standardne HTTP metode (GET, POST, PUT, DELETE) i JSON format za razmenu podataka.

REST API je ugrađen u WordPress od verzije 4.7 (decembar 2016) i predstavlja moderan način za interakciju sa WordPress-om. Koristi se za mobilne aplikacije koje prikazuju WordPress sadržaj, JavaScript frontend-e (React, Vue, Angular) koji koriste WordPress kao backend, integracije sa eksternim servisima i automatizaciju upravljanja sadržajem. Gutenberg editor, koji je standardni WordPress editor od verzije 5.0, intenzivno koristi REST API za sve operacije sa sadržajem. Ako tek počinjete, pogledajte naš vodič za instalaciju WordPress-a.

Osnove REST API-ja

Endpoint-i i rute

WordPress REST API je dostupan na vašem sajtu pod /wp-json/ putanjom. Koristeći browser ili alat poput cURL ili Postman-a, možete pristupiti API-ju. Na primer, GET zahtev na /wp-json/wp/v2/posts vraća listu postova u JSON formatu, /wp-json/wp/v2/pages vraća stranice, /wp-json/wp/v2/categories vraća kategorije, /wp-json/wp/v2/users vraća korisnike, /wp-json/wp/v2/media vraća medijske fajlove, a /wp-json/wp/v2/comments vraća komentare. Svaki od ovih endpoint-a podržava različite HTTP metode za različite operacije - GET za čitanje, POST za kreiranje, PUT/PATCH za ažuriranje i DELETE za brisanje.

Parametri upita

REST API podržava brojne parametre za filtriranje i paginaciju rezultata. Parametar per_page kontroliše broj rezultata po stranici (podrazumevano 10, maksimalno 100), page specificira stranicu rezultata za paginaciju, search pretražuje sadržaj po ključnoj reči, orderby definiše polje za sortiranje (date, title, id), order definiše smer sortiranja (asc ili desc), a categories i tags filtriraju po kategoriji ili tagu. Na primer, zahtev /wp-json/wp/v2/posts?per_page=5&categories=3&orderby=date&order=desc vraća 5 najnovijih postova iz kategorije sa ID-jem 3.

Struktura odgovora

API vraća podatke u JSON formatu. Svaki post objekat sadrži id (jedinstveni identifikator), title sa rendered svojstvom (naslov sa HTML formatiranjem), content sa rendered svojstvom (sadržaj posta), excerpt sa rendered svojstvom (izvod), date (datum objave u ISO 8601 formatu), slug (URL-friendly naslov), status (publish, draft, pending), author (ID autora), categories i tags (nizovi ID-ova). HTTP zaglavlja odgovora sadrže korisne metapodatke: X-WP-Total (ukupan broj stavki) i X-WP-TotalPages (ukupan broj stranica).

Autentifikacija

Javni vs zaštićeni endpoint-i

Neki endpoint-i su javno dostupni bez autentifikacije - čitanje objavljenih postova, stranica, kategorija i tagova. Operacije koje menjaju podatke (kreiranje, ažuriranje, brisanje) i pristup privatnim podacima zahtevaju autentifikaciju. WordPress REST API podržava nekoliko metoda autentifikacije u zavisnosti od konteksta korišćenja.

Application Passwords

Od WordPress 5.6, Application Passwords su ugrađeni u core i predstavljaju najjednostavniji način za autentifikaciju eksternih aplikacija. Kreirate Application Password za korisnika u Users → Profile → Application Passwords. Generisani password se koristi sa HTTP Basic Authentication - šaljete korisničko ime i application password u Authorization zaglavlju svakog zahteva. Application Password-i imaju prednost što se mogu opozvati pojedinačno bez promene glavne lozinke korisnika.

JWT autentifikacija

JSON Web Token (JWT) je popularna metoda za autentifikaciju u single-page aplikacijama i mobilnim aplikacijama. WordPress nema ugrađenu JWT podršku, ali plugini poput JWT Authentication for WP REST API ili Simple JWT Login dodaju ovu funkcionalnost. Klijent šalje korisničko ime i lozinku na token endpoint, dobija JWT token koji zatim šalje u Authorization zaglavlju kao Bearer token uz svaki zahtev. JWT tokeni imaju ograničeno trajanje i mogu se osvežiti bez ponovnog slanja lozinke.

OAuth 2.0

OAuth 2.0 je industrijski standard za autorizaciju koji omogućava trećim stranama pristup resursima bez deljenja lozinki. WordPress podržava OAuth kroz plugin OAuth Server. OAuth je idealan za aplikacije koje pristupaju WordPress sadržaju u ime korisnika - korisnik autorizuje aplikaciju kroz WordPress login stranicu, aplikacija dobija access token i koristi ga za API pozive. Ovo je najbezbednija metoda za produkcijske aplikacije.

Kreiranje custom endpoint-a

Register REST Route

WordPress omogućava kreiranje custom API endpoint-a za specifične potrebe vaše aplikacije. Koristite register_rest_route() funkciju u rest_api_init hook-u. Definišete namespace (npr. myplugin/v1), rutu (npr. /featured-posts), HTTP metodu (GET, POST), callback funkciju koja vraća podatke i opcionalnu permission_callback funkciju za kontrolu pristupa. Custom endpoint-i su korisni za podatke koji zahtevaju kompleksne upite, agregacije ili transformacije koje standardni endpoint-i ne podržavaju.

Permission Callback

Permission callback funkcija kontroliše ko može pristupiti endpoint-u. Za javne endpoint-e, koristite __return_true. Za zaštićene endpoint-e, proverite korisničke dozvole koristeći current_user_can() funkciju. Na primer, endpoint za kreiranje postova treba da proveri current_user_can('publish_posts'). Nikada ne ostavljajte write endpoint-e bez permission callback-a jer to otvara sajt za zloupotrebu.

Validacija i sanitizacija parametara

Custom endpoint-i treba da definišu argumente sa validacijom i sanitizacijom. Za svaki parametar, definišete required (da li je obavezan), type (string, integer, boolean), validate_callback (funkcija koja proverava validnost vrednosti) i sanitize_callback (funkcija koja čisti vrednost pre upotrebe). WordPress nudi ugrađene sanitize funkcije poput sanitize_text_field(), absint() i sanitize_email(). Pravilna validacija sprečava neočekivane greške i bezbednosne ranjivosti.

Headless WordPress

Koncept headless CMS-a

Headless WordPress je arhitektura gde se WordPress koristi samo kao backend (CMS) za upravljanje sadržajem, dok se frontend prikazivanje radi u potpuno odvojenoj aplikaciji. WordPress REST API služi kao most između backend-a i frontend-a. Frontend može biti napravljen u React-u, Vue.js-u, Next.js-u, Nuxt-u, Angular-u ili bilo kom drugom framework-u. Prednosti su potpuna kontrola nad frontend-om, bolje performanse (statičke stranice umesto WordPress PHP renderovanja), mogućnost korišćenja istog sadržaja na web sajtu, mobilnoj aplikaciji i drugim platformama, i moderna razvojna iskustva (hot reloading, component-based arhitektura).

Next.js i WordPress

Kombinacija Next.js-a i WordPress-a je jedna od najpopularnijih headless implementacija. Next.js pruža server-side rendering (SSR), static site generation (SSG) i incremental static regeneration (ISR) što rezultira izuzetno brzim sajtovima. Sadržaj se fetchuje sa WordPress REST API-ja tokom build-a (za SSG) ili na zahtev (za SSR). Next.js Image komponenta automatski optimizuje slike, a routing sistem preslikava WordPress slug-ove na stranice. Mnogi veliki sajtovi koriste ovu kombinaciju za blog sekcije dok ostatak sajta koristi custom komponente.

Izazovi headless pristupa

Headless WordPress nije bez izazova. Izgubili ste WordPress teme i vizuelni customizer - sve mora biti kodirano u frontend framework-u. Plugini koji generišu frontend output (kontakt forme, galerije, page builder-i) ne funkcionišu u headless modu. Preview funkcionalnost zahteva dodatnu konfiguraciju. SEO plugini poput Yoast-a generišu meta podatke ali frontend mora da ih preuzme i pravilno prikaže. Komentari, pretraga i paginacija moraju biti implementirani na frontend-u koristeći API pozive. Headless pristup zahteva tim sa frontend razvojnim iskustvom.

Bezbednost REST API-ja

Ograničavanje pristupa

Podrazumevano, WordPress REST API je javno dostupan i otkriva informacije o korisnicima, postovima i strukturi sajta. Za sajt koji ne koristi API, razmislite o ograničavanju pristupa. Možete deaktivirati REST API za neautentifikovane korisnike koristeći rest_authentication_errors filter, blokirati specifične endpoint-e (posebno /wp/v2/users koji otkriva korisnička imena), ili koristiti plugin poput Disable WP REST API za selektivno isključivanje. Nikada ne blokirajte REST API kompletno ako koristite Gutenberg editor jer on zavisi od API-ja.

Rate Limiting

REST API bez rate limiting-a može biti zloupotrebljen za brute force napade, scraping sadržaja ili DDoS. Implementirajte rate limiting na nivou web servera (Nginx limit_req modul, Apache mod_ratelimit) ili koristeći WAF pravila. Cloudflare Rate Limiting je jednostavno rešenje - ograničite /wp-json/ endpoint na razuman broj zahteva po minutu (npr. 60 za autentifikovane, 30 za neautentifikovane korisnike).

Korisni alati za rad sa REST API-jem

  • Postman: Grafički alat za testiranje API poziva sa podrškom za sve HTTP metode, autentifikaciju i kolekcije zahteva.
  • cURL: Komandni alat za HTTP zahteve - idealan za brzo testiranje i skriptovanje.
  • Insomnia: Moderna alternativa Postman-u sa čistim interfejsom i GraphQL podrškom.
  • WP-CLI: WordPress komandni alat koji interno koristi REST API i omogućava upravljanje sajtom iz terminala.
  • Thunder Client: VS Code extension za testiranje API-ja direktno iz editora.

Zaključak

WordPress REST API otvara nove mogućnosti za korišćenje WordPress-a izvan tradicionalnog blog-a ili sajta. Bilo da pravite mobilnu aplikaciju, JavaScript frontend ili integrišete WordPress sa drugim sistemima, REST API pruža standardizovan i dokumentovan način za pristup sadržaju. Za headless projekte, kombinacija WordPress-a i modernog frontend framework-a poput Next.js-a nudi najbolje od oba sveta - jednostavno upravljanje sadržajem i vrhunske performanse. Na BeoHosting-u, svi hosting paketi za WordPress podržavaju REST API sa optimizovanim PHP i MySQL konfiguracijama za brže API odgovore.

BeoHosting Tim

10+ godina iskustva — Stručnjaci za web hosting i infrastrukturu

  • Web Hosting
  • WordPress Hosting
  • VPS
  • Dedicated Serveri
  • Domeni
  • SSL
  • cPanel
  • LiteSpeed
  • Linux administracija
  • DNS

Poslednje ažurirano: