REST naturen i MVC

by Jesper marts 04, 2008 15:48

Med MVC Frameworket, arbejder man med at opbygge en internetapplikation, i stedet for et internetsite. Man tolker Url'er som ressourcer i stedet for sider, og http metoderne har pludselig fået en anden og mere klar betydning. Når man designer sin MVC applikation, og dermed sine Url mønstre (Route), er man nu tvunget til at tænke i funktionalitet. Tag f.eks.:

/Shop/Categories/List

Her er man slet ikke tvivl om at man kan forvente en listning af sine produkt-kategorier vel? Hvad så med:

/Shop/Categories/2

Ja umiddelbart, så kunne man forvente at kategorien med id=2 vises, men det kommer vel lidt an på med hvilken metode vi kalder Url'en. Hvad nu hvis metoden er: DELETE? Så burde ovenstående Url vel slette hele kategorien med id=2 ikke?

Vi rører ved noget centralt i REST aspektet i MVC frameworket. De fleste tænker nok kun på metoderne GET og POST, som man har brugt i lang tid ved form-baseret webudvikling, men de er jo dybest set ikke helt nok. Jeg mener man i sit MVC API design, bør tage højde for følgende designlinjer.

GET

Må kun bruges ved 'ufarlige' kald til ressourcer. Altså kald hvor der ikke forventes andet end at der returneres data. Et kald som f.eks.:

/Shop /Products/2?action=delete

vil i følge min terminologi være 'farlig'.

POST

Skal bruges, når man ønsker at poste data til sin ressource. Det kan typisk være kald der resulterer i en opdatering af data.

DELETE

Skal bruges når man ønsker at slette ressourcer.

PUT

Skal bruges når man ønsker at oprette nye ressourcer. Man kan selvfølgelig argumentere for at man også kan bruge POST til oprettelse, da termen jo kan ændre betydning ud fra hvilken ressource man beskuer metoden fra. Ændre man, eller tilføjer man til en liste, når der introduceres et nyt emne?

DELETE og PUT metoderne, har været en del af http definitionen, siden den første gang blev introduceret, men det er ikke mange gange jeg har været stødt ind i dem i mit virke som udvikler. Det ændre dog ikke ved, at jeg mener de har deres absolutte berettigelse i forbindelse med MVC frameworks, og jeg tror at de vil blive involveret i kommende versioner af produktet.

Efterfølgende, opstår selvfølgelig spørgsmålet:

Nu hvor Html-form elementet kun understøtter GET og POST, hvordan får man så klienten (IE og FF) til at requeste med DELETE eller PUT metoden?

Ja, ind til videre, så er det ganske rigtigt kun de to første og mest udbredte metoder der understøttes af formen, men så har vi heldigvis XmlHttpRequest objektet til at foretage vores AJAX kald med. Den understøtter alle metoder. Jeg har netop afsluttet en række forsøg med min applikation, og det virkede i både IE og FF.

[code=JavaScript] $.ajax({ type: "DELETE", url: "TestRest.aspx", dataType: "html", success: function(msg){alert(msg)} }); [/code]

(Mit AJAX bibliotek er jQuery)

Thats it'n that's that

Tags:

Kommentarer

04-03-2008 17:51:10 #

trackback

Trackback from DotNetKicks.com

REST naturen i MVC

DotNetKicks.com

Kommentarerne er lukkede

Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen | Modified by Mooglegiant

About

Mit navn er Jesper Jensen, og jeg arbejder til dagligt som web-udvikler hos DGI, hvor mit speciale er klientside applikationer. Før det var jeg nogle år i robotbranchen, hvor jeg arbejdede med 3D simulering og system koordinering. Jeg elsker webudvikling, og specielt JavaScript har min interesse. Jeg har blogget om mine oplevelser med udvikling siden 2004

Calendar

<<  september 2010  >>
mationtofr
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

View posts in large calendar

RecentComments

Comment RSS