Preskoči na sadržaj
BeoHosting
BeoHosting
Tehničko

Vodič za WordPress REST API

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

Šta je WordPress REST API

WordPress ekosustav REST API je sučelje koji omogućava eksternim aplikacijama da komuniciraju sa WordPress sajtom putem HTTP zahtijeva. Umjesto 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 razmjenu podataka.

REST API je ugrađen u WordPress od verzije 4.7 (prosinac 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 primjer, GET zahtjev 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 kontrolira broj rezultata po stranici (podrazumijevano 10, maksimalno 100), page specificira stranicu rezultata za paginaciju, search pretražuje sadržaj po ključnoj reči, orderby definira polje za sortiranje (date, title, id), order definira smjer sortiranja (asc ili desc), a categories i tags filtriraju po kategoriji ili tagu. Na primjer, zahtjev /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 mijenjaju podatke (kreiranje, ažuriranje, brisanje) i pristup privatnim podacima zahtijevaju autentifikaciju. WordPress REST API podržava nekoliko metoda autentifikacije u ovisnosti od konteksta korištenja.

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 zahtijeva. Application Password-i imaju prednost što se mogu opozvati pojedinačno bez promjene 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 zahtjev. 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 dijeljenja 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 najsigurnija 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 zahtijevaju kompleksne upite, agregacije ili transformacije koje standardni endpoint-i ne podržavaju.

Permission Callback

Permission callback funkcija kontrolira ko može pristupiti endpoint-u. Za javne endpoint-e, koristite __return_true. Za zaštićene endpoint-e, provjerite korisničke dozvole koristeći current_user_can() funkciju. Na primjer, endpoint za kreiranje postova treba da provjeri 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 definiraju argumente sa validacijom i sanitizacijom. Za svaki parametar, definirate required (da li je obavezan), type (string, integer, boolean), validate_callback (funkcija koja provjerava validnost vrijednosti) i sanitize_callback (funkcija koja čisti vrijednost prije upotrebe). WordPress nudi ugrađene sanitize funkcije poput sanitize_text_field(), absint() i sanitize_email(). Pravilna validacija sprječava neočekivane greške i sigurnosne ranjivosti.

Headless WordPress

Koncept headless CMS-a

Headless WordPress je arhitektura gdje 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 umjesto WordPress PHP renderiranja), mogućnost korištenja 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 iznimno brzim sajtovima. Sadržaj se fetchuje sa WordPress REST API-ja tokom build-a (za SSG) ili na zahtjev (za SSR). Next.js Image komponenta automatski optimizira slike, a routing sustav 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 vizualni customizer - sve mora biti kodirano u frontend framework-u. Plugini koji generiraju frontend output (kontakt forme, galerije, page builder-i) ne funkcioniraju u headless modu. Preview funkcionalnost zahtijeva dodatnu konfiguraciju. SEO plugini poput Yoast-a generiraju 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 zahtijeva tim sa frontend razvojnim iskustvom.

Sigurnost REST API-ja

Ograničavanje pristupa

Podrazumijevano, 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 neautentificirane 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 ovisi 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 rješenje - ograničite /wp-json/ endpoint na razuman broj zahtjeva po minutu (npr. 60 za autentifikirane, 30 za neautentificirane 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 zahtijeva.
  • cURL: Komandni alat za HTTP zahtjeve - idealan za brzo testiranje i skriptovanje.
  • Insomnia: Moderna alternativa Postman-u sa čistim sučeljem 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štenje WordPress-a izvan tradicionalnog blog-a ili sajta. Bilo da pravite mobilnu aplikaciju, JavaScript frontend ili integrišete WordPress sa drugim sustavima, REST API pruža standardiziran i dokumentiran 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 svijeta - jednostavno upravljanje sadržajem i vrhunske performanse. Na BeoHosting-u, svi hosting paketi za WordPress podržavaju REST API sa optimiziranim PHP i MySQL konfiguracijama za brže API odgovore.

BeoHosting Team

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

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

Posljednje ažuriranje: