Vairāk
Kas īsti ir RESTful programmēšana?
Kas īsti ir RESTful programmēšana?
3909
3
Kas īsti ir RESTful programmēšana?
REST ir tīmekļa arhitektūras pamatprincips. Tīmekļa pārsteidzošā īpašība ir tā, ka klienti (pārlūkprogrammas) un serveri var mijiedarboties sarežģītos veidos, klientam iepriekš neko nezinot par serveri un tajā izvietotajiem resursiem. Galvenais ierobežojums ir tāds, ka serverim un klientam ir jāvienojas par izmantoto mediju, kas tīmekļa gadījumā ir HTML.
API, kas atbilst REST principiem, neprasa, lai klients kaut ko zinātu par API struktūru. Drīzāk serverim ir jāsniedz visa klientam nepieciešamā informācija, lai mijiedarbotos ar pakalpojumu. HTML veidlapa ir šāds piemērs: Serveris norāda resursa atrašanās vietu un nepieciešamos laukus. Pārlūkprogramma iepriekš nezina, kur iesniegt informāciju, un tā iepriekš nezina, kāda informācija tai jāiesniedz. Abus informācijas veidus pilnībā nodrošina serveris. (Šo principu sauc par HATEOAS: Hypermedia As The Engine Of Application State.).
Tātad, kā tas attiecas uz HTTP un kā to var īstenot praksē? HTTP ir orientēts uz darbības vārdiem un resursiem. Divi galvenie darbības vārdi ir
GET
unPOST
, kurus, manuprāt, visi atpazīs. Tomēr HTTP standartā ir definēti vairāki citi, piemēram,PUT
unDELETE
. Šie darbības vārdi tiek piemēroti resursiem saskaņā ar servera sniegtajiem norādījumiem.Piemēram, iedomāsimies, ka mums ir lietotāju datubāze, ko pārvalda tīmekļa pakalpojums. Mūsu pakalpojums izmanto pielāgotu hipertīklu, kura pamatā ir JSON, kam mēs piešķiram mimetype
application/json+userdb
(var būt arīapplication/xml+userdb
unapplication/whatever+userdb
- var tikt atbalstīti daudzi mediju tipi). Gan klients, gan serveris ir ieprogrammēti tā, lai saprastu šo formātu, bet tie viens par otru neko nezina. Kā norāda Roy Fielding:Pieprasot bāzes resursu
/
, var saņemt kaut ko līdzīgu:Pieprasījums
Atbilde
No mūsu multivides apraksta mēs zinām, ka informāciju par saistītiem resursiem mēs varam atrast sadaļās ar nosaukumu "saites". To sauc par Hipermediju kontroli. Šajā gadījumā no šādas sadaļas mēs varam noteikt, ka varam atrast lietotāju sarakstu, veicot vēl vienu pieprasījumu
/user
:Pieprasījums
Atbilde
No šīs atbildes var daudz ko secināt. Piemēram, tagad mēs zinām, ka varam izveidot jaunu lietotāju, izmantojot
POST
uz/user
:Pieprasījums
Atbilde
Mēs arī zinām, ka varam mainīt esošos datus:
Pieprasījums
Atbilde
Ievērojiet, ka mēs izmantojam dažādus HTTP darbības vārdus (
GET
,PUT
,POST
,DELETE
u.c.), lai manipulētu ar šiem resursiem, un ka vienīgās zināšanas, ko mēs pieņemam no klienta puses, ir mūsu mediju definīcija.Turpmāka lasīšana:
(Šī atbilde ir saņēmusi diezgan daudz kritikas par to, ka tajā nav ietverta būtība. Lielākoties tā ir taisnīga kritika. Tas, ko es sākotnēji aprakstīju, vairāk atbilda tam, kā REST parasti tika īstenots pirms dažiem gadiem, kad es pirmo reizi to rakstīju, nevis tā patiesajai nozīmei. Esmu pārskatījis atbildi, lai labāk atspoguļotu patieso nozīmi.)
REST izmanto dažādas HTTP metodes (galvenokārt GET/PUT/DELETE), lai manipulētu ar datiem.
Tā vietā, lai dzēstu metodi (piemēram,
/user/123/delete
), jūs nosūtītu DELETE pieprasījumu uz/user/[id]
URL, lai rediģētu lietotāju, lai iegūtu informāciju par lietotāju, jūs nosūtītu GET pieprasījumu uz/user/[id]
.Piemēram, tā vietā var izveidot URL kopumu, kas varētu izskatīties šādi..
Jūs izmantojat HTTP "verbs" un jums ir..
Tā ir programmēšana, kurā jūsu sistēmas arhitektūra atbilst REST stilam, ko savā disertācijā izklāstījis Rojs Fildings. Tā kā šis arhitektūras stils (vairāk vai mazāk) raksturo tīmekli, tas interesē daudzus cilvēkus.
Bonusa atbilde: Ja vien jūs kā akadēmiskais darbinieks nestudējat programmatūras arhitektūru vai neizstrādājat tīmekļa pakalpojumus, nav iemesla dzirdēt šo terminu.