M-am gandit ca ar fi momentul sa vorbim putin despre request-urile http. Desi ele nu sunt nici pe departe un subiect nou, ele au inceput sa fie folosite explicit de catre programatori numai de cativa ani.
De ce spun explicit? Pentru ca in mod implicit le folosim cu totii, de multe ori fara sa ne dam seama. Cand scriem un URL in bara de adrese a browser-ului, acesta face un request http catre server pentru a incarca pagina pe care am cerut-o. La fel, de cate ori completam un formular si apasam Submit, facem un request http catre fisierul de pe server ce proceseaza informatiile pe care i le-am dat.
Deci de unde discutia despre GET si POST? Pentru ca in modul “implicit” despre care am vorbit mai sus, si-au batut altii capul in locul nostru. Browser-ul face in mod implicit cereri prin GET, iar formularele (daca nu se specifica altceva), trimit datele prin POST. De ce sa ne mai batem capul?
Simplu. In ultimii ani, tehnologia AJAX a castigat foarte mult teren in aplicatiile web. Ea este disponibila demult, dar pana la aparitia librariilor JavaScript (jQuery, Prototype, etc.) era destul de laborioasa. Se folosea un obiect de timp XMLHttpRequest care trebuia instantiat diferit in functie de suportul oferit de diferite browsere.
Mai mult, datele odata aduse de pe server trebuiau parsate “manual” si inserate acolo unde aveam nevoie in pagina. Pe scurt, se putea dar era greoi.
Insa de cand librariile mai sus mentionate ne-au scapat de partea laborioasa a AJAX-ului noi, programatorii, putem sa ne concentram asupra partilor importante in lucrul cu aceasta tehnologie. Si pentru ca AJAX stie sa faca reuqest-uri atat prin GET cat si prin POST, ramane la latitudinea noastra sa decidem ce metoda folosim.
Astfel ca ajungem la intrebarea din titlu. Cand folosim GET si cand folosim POST; si mai ales, de ce?
Sa analizam pentru inceput numele celor doua metode. Prima se numeste GET, care ne duce de prima data cu gandul la “a aduce”. Deci metoda GET a fost gandita pentru a aduce date de pe server (cum ar fi incarcarea unei pagini in browser).
In schimb, metoda POST vine de la “a pune” sau “a trimite”. Ea este folosita atunci cand vrem sa trimitem date catre server pentru a fi prelucrate de acesta.
Bine bine, dar exista vreo diferenta intre ele? Ce ne opreste sa submitem un formular prin GET? Sau sa facem un request AJAX prin POST, chiar daca vrem numai sa aducem date de pe server? NU. Ambele requesturi vor avea efectul dorit.
Dar asta nu inseamna ca vor fi corecte. Nu uitati ca exista doua metode pentru ca ele se comporta diferit. De exemplu GET este supus cache-ingului, in timp ce POST nu. Iar metoda post ascunde parametrii trimisi din browser, pe cand GET ii va insira pe toti in bara de adresa.
Evident, AJAX-ul a fost folosit ca exemplu. Request-urile http pot fi facute prin socket-uri din PHP, sau prin alte metode proprietare folosite de diverse limbaje de programare.
Ce trebuie sa tinem minte? Desi aparent functioneaza la fel, GET si POST au fost gandite pentru scopuri diferite si ar trebui sa avem grija cum folosim flexibilitatea de alege intre cele doua metode.
Iti multumesc!
Foarte frumos ceea ce faci!