| [REST] Razlika med PUT in PATCH? | ||
|---|---|---|
|
thai
3. jul 2015 09:13:41
Pridružen od: 14. dec 2014 81 objav 32 31 2 |
#1
Pri Laravel lahko za update izberem metodo PUT ali PATCH in mi ni jasno, v čem je razlika? Načeloma uporabljam PATCH ampak če za metodo izberem PUT, update-anje še vedno deluje brez težav in mi ni jasno v čem je sploh razlika? *Uporabniku je bila prepovedana uporaba foruma zaradi večih uporabniških računov, ki so po [pravilih obnašanja](/pravila.html) prepovedani.*
|
|
|
spicey
3. jul 2015 09:41:51
Pridružen od: 2. avg 2007 70 objav 87 3 3 |
#2
Malo si preberi o REST-u, pa boš bolje razumel. (ker mi, glede na tvoje vprašanje, deluje, da gledaš ti na to s stališča PHP-ja oz Laravela, ne pa HTTP metode) |
|
|
Vini
3. jul 2015 09:44:57
Pridružen od: 1. sep 2006 6612 objav 5234 611 56 |
#3
Glavna razlika je v tem, da je PUT namenjen zamenjavi celotnega resourca, PATCH pa se uporablja za modifikacijo obstoječega. Če v obeh primerih podaš vse lastnosti resourca, potem razlike efektivno res ni. Je pa vprašanje, če Laravel res upošteva tole ali ne, ga ne poznam. Poskusi narediti PUT s kakšnim manjkajočim propertyjem resourca, načeloma bi ti moral manjkajočega v resourcu izpraznit. |
|
|
bostjan
3. jul 2015 09:51:29
Pridružen od: 31. jul 2008 643 objav 689 30 9 |
#4
Ni lih fora Laravela (ali katerega koli frameworka). Fora je kako imaš ti narejeno v kodi. Drugače pa ti je Vini napisal glavno razliko. |
|
|
thai
3. jul 2015 10:45:30
Pridružen od: 14. dec 2014 81 objav 32 31 2 |
#5
Ne gledam iz stališča Laravela. Mi je jasno, da gre tu za HTTP request v originalu s POST metodo ter hidden input z metodo PUT, PATCH (pač za spremembo resource) in da lahko tak način implemnentiraš vsepovsod... Laravel sem omenil, ker me zanima, kako je rešeno tukaj + smisel dveh metod.
Približno tako sem si tudi sam vse skupaj razlagal in sem že prej naredil test tako, da en input ni bil določen (file) in pri PUT bi mi verjetno moralo potem to polje v bazi "izprazniti" ampak mi ga ne in ostane nespremenjeno. Recimo, da imam (dumpal sem request, enkrat za PATCH, drugič za PUT)... Pa recimo, da sem spremenil samo vrednost "name". V 1. primeru (PATCH) mi potem updata samo polje "name"? V 2. primeru (PUT) pa bi mi moralo v bazi updatat name, url (+polje img, ki ga nisem spreminjal - v inputu nisem dodal nove slike zato te vrednosti v requestu ni - ampak mi ga ne, polje img v bazi ostane nespremenjeno)? Sicer pa ne vidim potem nekega velikega smisla v PUT metodi, če pa lahko vedno uporabim PATCH in je to to? Ali v katerem primeru bi potem sploh prišla prav PUT metoda? (* da ne bo kdo zmeden zakaj je v polju zapisano 6, dve vrednosti sem z grafičnim programom odstranil :D jasno, med njimi ni bilo img, ker je polje ne vsebuje, ker ni določena) *Uporabniku je bila prepovedana uporaba foruma zaradi večih uporabniških računov, ki so po [pravilih obnašanja](/pravila.html) prepovedani.*
|
|
|
bostjan
3. jul 2015 11:31:51
Pridružen od: 31. jul 2008 643 objav 689 30 9 |
#6
Točno to kar ti je spicey napisal si zamešal. PUT in PATCH nista noben POST, ampak PUT IN PATCH. POST se naredi samo zato ker brskalniki ne podpirajo patch in put in se potem s hidden elementom naredi fake metoda. Kako ti pa potem zadeve v ozadju dela......to je pa stvar tebe. Načeloma ti lahko podatke urejaš na get in na put brišeš. Lahko nove kreiraš z DELETE, ..... To je stvar programerja ki ureja. |
|
|
thai
3. jul 2015 12:17:11
Pridružen od: 14. dec 2014 81 objav 32 31 2 |
#7
Ja saj to sem zgoraj napisal kot odgovor spicey ;) Metodo PUT/PATCH/DELETE pač "fejkamo" preko POST s hidden input, ker teh metod brskalnik ne pozna potem pa preko vrednosti za _metod (vidimo za katero "fake" metodo gre) naredimo kar želimo (generiramo SQL za UPDATE, DELETE... ). To je meni jasno. Malo sem bil v dvomim kakšna je točno razlika med PUT in PATCH, to je vini v principu pojasnil AMPAK očitno se tega pri Laravel ne držijo (me čisto informativno zamina)? Sem zdajle dumpal query v primeru za PUT in v primeru za PATCH. V obeh primeri se v Laravel generira enak query... Recimo, če spremenim ime (input name, ostali inputi ostanejo enaki)... pri PATCH... string'update pri PUT se generira query string'update Query-a sta identična torej je pri Laravel čisto vseeno ali uporabiš PUT ali PATCH, ker se očitno ne držijo tega, kar je zapisal Vini? *Uporabniku je bila prepovedana uporaba foruma zaradi večih uporabniških računov, ki so po [pravilih obnašanja](/pravila.html) prepovedani.*
|
|
|
blackmamba
3. jul 2015 12:33:37
Pridružen od: 4. mar 2008 559 objav 392 25 11 |
#8
Ja, query je isti, v praksi lahko lahko isti query uporabiš tudi v POST-u ali DELETE, ampak tega ne počni. Te metode so nekako "standardizirane", da bi tisti, ki na novo implementirajo api lažje in hitreje dojeli kaj katera metoda/klic naredi. Jaz razumem to samo kot organizacijsko vrednost. |
|
|
thai
3. jul 2015 13:06:42
Pridružen od: 14. dec 2014 81 objav 32 31 2 |
#9
Še ena opazka glede PATCH...
Očitno bom raje uporabljal kar PUT... Tisti, ki programirate v Laravel, katero metodo uporabljate za update? PUT ali PATCH, me čisto informativno zanima. *Uporabniku je bila prepovedana uporaba foruma zaradi večih uporabniških računov, ki so po [pravilih obnašanja](/pravila.html) prepovedani.*
|
|
