Kako koristiti Webform REST modul sa Drupal 11: Praktičan vodič
U dinamičnom okruženju web razvoja, Drupal 11 se izdvaja kao jedna od najrobustnijih i najfleksibilnijih platformi za izgradnju dinamičkih sajtova i aplikacija. Njegova modularna arhitektura omogućava developerima da prilagode i prošire osnovne funkcionalnosti za širok spektar projektnih potreba.
Jedno od tih proširenja je Webform REST modul, moćan alat koji omogućava jednostavnu integraciju između Drupala i eksternih aplikacija putem RESTful API-ja. Ovaj vodič pruža praktičan uvod u korišćenje Webform REST modula sa Drupal 11, objašnjava postavljanje i konfiguraciju i pokazuje kako efikasno komunicirati sa modulom.
Šta ćete naučiti
Ovaj članak pokriva sledeće teme:
-
Pregled Webform REST modula
-
Potrebni moduli i zavisnosti
-
Instalacija Webform REST i REST UI
-
Konfiguracija Webform REST modula
-
Podešavanje CORS-a
-
Slanje API zahteva
-
Razumevanje request i response payload-a
Pregled modula: Webform REST
Webform REST modul proširuje Webform mogućnosti Drupala tako što izlaže funkcionalnosti vezane za forme putem RESTful endpointova. Omogućava operacije kao što su kreiranje, pregled, ažuriranje i brisanje web formi, kao i slanje i preuzimanje podataka iz formi kroz HTTP zahteve.
Ovaj modul je posebno koristan za integraciju Drupala sa eksternim platformama kao što su:
-
CRM sistemi
-
Alati za email marketing
-
Mobilne aplikacije
-
Servisi trećih strana
Omogućavanjem ovakvih integracija, možete pojednostaviti procese i centralizovati prikupljanje podataka, značajno unapređujući ukupnu efikasnost vaše aplikacije.
Prethodni zahtevi
Da biste započeli rad sa Webform REST, potrebno je da imate sledeće module instalirane:
-
Webform – za kreiranje i upravljanje web formama
-
REST UI – za konfiguraciju RESTful endpointova i dozvola
-
Webform REST – glavni modul koji omogućava API funkcionalnost
Instalacija Webform REST i zavisnosti
U ovom vodiču koristimo Docker i Lando za upravljanje lokalnim razvojnim okruženjem, a Composer za upravljanje zavisnostima.
Za instalaciju Webform REST modula, pokrenite sledeću komandu:
$ lando composer require 'drupal/webform_rest:^4.0'
Za uključivanje modula:
$ lando drush en webform_rest
Dodatno, omogućite i REST UI modul koji vam omogućava konfiguraciju REST endpointova iz admin interfejsa:
$ lando drush en restui
Alternativno, ove module možete aktivirati i putem admin interfejsa:
/admin/modules
Konfigurisanje Webform REST modula
Kada su potrebni moduli uključeni, idite na stranicu za REST konfiguraciju:
Putanja: /admin/config/services/rest
Omogućite sledeće REST resurse:
-
Webform Submission
-
Webform Elements
-
Webform Submit
Ovi resursi omogućavaju osnovne endpointove za rad sa formama i njihovim podacima putem REST-a.
Neophodno je izabrati bar jedan metod autentifikacije, u našem primeru "cookie".
Da biste omogućili neautentifikovanim korisnicima da šalju zahteve putem web forme, morate dodeliti odgovarajuće dozvole ulozi Anonymous korisnika. Konkretno, omogućite im POST zahteve na Webform Submit REST resursu.
Ovu dozvolu možete podesiti odlaskom na:
/admin/people/permissions
U sekciji “RESTful Web Services” čekirajte polje za “Access POST on Webform Submit resource” za Anonymous user. Ovo osigurava da eksterni korisnici ili sistemi bez autentifikacije mogu uspešno slati podatke na vaš Drupal sajt putem Webform REST API-ja.
Nekoliko reči o CORS-u
Ako planirate da šaljete zahteve sa domena različitog od onog na kom je vaša aplikacija instalirana, verovatno ćete naići na CORS problem kao na slici:
Razumevanje i podešavanje CORS-a u Drupalu 11
CORS (Cross-Origin Resource Sharing) je ključni sigurnosni mehanizam implementiran od strane web pregledača radi kontrole pristupa resursima sa različitih izvora—gde je izvor definisan kao kombinacija domena, protokola i porta.
Jednostavno rečeno, CORS omogućava serverima da preciziraju kojim spoljnim domenima je dozvoljen pristup određenim resursima putem browser zahteva. Bez ispravno podešene CORS politike, browser se vraća na Same-Origin Policy, koji blokira pristup svim resursima osim onima sa istog izvora.
Podešavanje CORS-a u Drupalu 11
Drupal 11 upravlja CORS podešavanjima kroz fajl services.yml
, tačnije kroz sekciju cors.config
. Po default-u, ova konfiguracija je isključena, što znači da su cross-origin zahtevi blokirani dok ih eksplicitno ne dozvolite.
Da biste omogućili CORS za eksterne klijente—poput JavaScript frontend-ova ili mobilnih aplikacija—potrebno je da izmenite konfiguraciju u svom services.yml
fajlu. Evo primera permisivnog podešavanja za razvoj ili test okruženje:
cors.config:
enabled: true
allowedHeaders: ['x-csrf-token','authorization','content-type','accept','origin','x-requested-with', 'access-control-allow-origin','x-allowed-header','*']
allowedMethods: ['*']
allowedOrigins: ['*']
exposedHeaders: false
maxAge: false
supportsCredentials: true
Podešavanje services.local.yml
u lokalnom razvoju
U većini lokalnih Drupal okruženja koristi se fajl services.local.yml
. Ovaj fajl je namenjen da prepisuje podešavanja iz glavnog services.yml
. Dakle, sve promene koje napravite u services.yml
mogu biti ignorisane ako postoje konfliktna ili nepotpuna podešavanja u services.local.yml
.
Da biste osigurali da CORS konfiguracija bude primenjena, proverite da su podešavanja ispravno uneta i u services.local.yml
.
Obavezno očistite keš nakon izmene podešavanja
Nakon izmene YAML konfiguracionih fajlova, očistite Drupal keš kako bi izmene stupile na snagu:
$ lando drush cr
Indentacija u YAML-u je bitna
Obratite pažnju na indentaciju u YAML fajlovima, jer je to čest izvor problema. Čak i jedan pogrešan razmak ili tab može uzrokovati da se podešavanja ignorišu—što može dovesti do sati nepotrebnog debugovanja. Ako izmene ne stupaju na snagu, najpre proverite indentaciju.
Korišćenje Webform REST modula
Kada je sve podešeno, možete početi sa slanjem formi putem REST-a. Proces podrazumeva slanje POST zahteva na Webform REST endpoint, zajedno sa potrebnim header-ima i podacima.
Endpoint
POST /webform_rest/submit
Obavezan header
Content-Type: application/json
Primer: Slanje forme koristeći Axios
Evo primera Axios zahteva u JavaScriptu za slanje podataka iz forme:
const response = await axios.post('http://yoursite.lndo.site/webform_rest/submit', {
"webform_id": "some_rest_form",
"name": "Ivan Abramenko",
"email": "levmyshkin89@gmail.com",
}, {
headers: {
"Content-Type": 'application/json',
},
});
Ovaj primer prikazuje kako da pošaljete POST zahtev pomoću Axios biblioteke, ali možete koristiti i druge HTTP biblioteke ili okvire.
Payload zahteva uglavnom sadrži webform_id, što je mašinsko ime ciljne forme, i njena registrovana polja.
{
"webform_id": "some_rest_form",
"name": "Ivan Abramenko",
"email": "levmyshkin89@gmail.com"
}
Odziv na uspešno slanje sadrži sledeća polja:
sid
– jedinstveni identifikator zapisaconfirmation_url
– URL za potvrdu slanjaconfirmation_message
– poruka potvrdeconfirmation_title
– naslov poruke potvrde
{
"sid": "ae8c3bd4-91a2-5c17-a264-59c86157457b",
"confirmation_type": "inline",
"confirmation_url": "",
"confirmation_message": "Just a confirmation message",
"confirmation_title": "A confirmation title"
}
Pored toga, možete dobiti i validacione poruke koje generiše sam Webform. Na primer, ako nije poslato obavezno polje, dobijate sledeći odgovor:
{
"message": "Submitted Data contains validation errors.",
"error": {
"email": "Polje email je obavezno."
}
}
Rukovanje API odgovorom
Na osnovu podataka iz API odgovora, možete programski obezbediti povratne informacije korisnicima—poput poruka o uspehu, validacionih grešaka ili neuspešnih pokušaja slanja. Pravilno prilagođavanje ovih odgovora poboljšava korisničko iskustvo i pruža jasnoću tokom interakcije.
Bilo da integrišete formu sa frontend okvirom ili mobilnom aplikacijom, efikasno rukovanje API odgovorima je ključno za nesmetano i intuitivno korisničko iskustvo.
Završna reč
Webform REST modul za Drupal 11 nudi moćno i fleksibilno rešenje za rad sa web formama putem RESTful API-ja. Omogućavanjem eksternim aplikacijama da šalju i manipulišu podacima iz formi, značajno proširuje integracione mogućnosti Drupala—čime postaje idealan za moderne web arhitekture koje se oslanjaju na decoupled ili headless pristup.
U ovom članku smo obradili:
-
Uvod u Webform REST modul
-
Korak-po-korak instalaciju i konfiguraciju
-
Kako slati podatke kroz API na praktičnom primeru
Iako je ovaj vodič bio fokusiran na slanje formi, Webform REST modul podržava i dodatne operacije koje ovde nisu pokrivene, uključujući:
-
PATCH zahteve za ažuriranje postojećih zapisa
-
GET zahteve za preuzimanje podataka ili listu polja forme
-
Dodatna podešavanja za autentifikaciju i kontrolu pristupa
Ove napredne primene biće obrađene u narednim tutorijalima.