Razumijevanje osnova Ruby on Rails: HTTP, MVC i Routes

Nakon učenja vašeg prvog programskog jezika , možete se pitati što možete učiniti s programiranjem: AI / Strojno učenje? Razvoj hardvera? Mobilne aplikacije? Ili možda želite započeti razvoj web aplikacija! :)

Ovdje ćemo razumjeti osnove rada weba, ruta i MVC arhitekture koristeći web okvir Ruby on Rails. Zaronimo u web svijet.

Prije nego što naučim web razvoj s Railsom, stvarno preporučujem da prvo naučim o Ruby .

Kako web funkcionira?

Web ima gomilu slojeva (aplikacijski, TCP, Internet, hardverski slojevi) koji su svi povezani. Ali u osnovi to radi putem HTTP-a ( Hypertext Transfer Protocol ).

Hypertext Transfer Protocol ( HTTP ) je aplikacija protokol za distribuirane, suradnički, hipermedija informacijskih sustava. - Wikipedija

HTTP radi kao zahtjev - odgovor ciklusa u klijent - poslužitelj modelu.

Imamo web preglednik (Google Chrome, na primjer). Tako smo upišite www.google.comURL, a klijent podnosi HTTP zahtjev (zahtjev za poruke) na poslužitelju . Poslužitelj vraća HTTP odgovora (poruka odgovora - u tom slučaju, odgovor je HTML iz Googleovog web stranici).

Klijent radi zahtjev i prima odgovor od poslužitelja . Klijent obrađuje korisničko sučelje i korisničke interakcije. Na poslužitelju možemo pohranjivati ​​i dohvaćati podatke (na bazama podataka), obrađivati ​​logiku u pozadini (radnici / poslovi) i puno drugih stvari.

Ako to želite duboko razumjeti, predložit ću vam neke resurse. Veliki sam obožavatelj Preethijevih postova. Evo niza od 3 dijela :

  • Priručnik za pridošlice u web razvoju
  • Klijent-poslužiteljski model i struktura web aplikacije
  • HTTP & OSTALO

Arhitektura MVC i Rails Routes

Sad kad razumijemo kako Internet funkcionira, proučit ćemo MVC arhitekturu i Rails Routes.

MVC je kratica za Model, View i Controller.

Na ovoj arhitekturi imamo " razdvajanje problema " među modelima, pogledima i kontrolerima. Svaki dio ima svoju odgovornost. Zaronimo u svaki dio.

Model

"Održava odnos između objekta i baze podataka i obrađuje provjeru valjanosti, pridruživanje, transakcije"

To znači da će model održavati ekstremnu vezu s bazom podataka . Svaki model (može) predstavlja tablicu baze podataka (u slučaju SQL baza podataka). Ovaj objekt objekta dobiva mogućnosti (naslijeđene od klase ActiveRecord - Rails) za dohvaćanje, spremanje, uređivanje i brisanje podataka iz tablice baze podataka. Objekte modela koristimo kao sloj između naše aplikacije i baze podataka.

Pored te veze s bazom podataka, model može stvoriti provjere valjanosti i asocijacije između modela.

Pogled

"Prezentacija podataka u određenom formatu, pokrenuta odlukom upravljača da prezentira podatke."

Ovo je prezentacija odgovora na zahtjev . Ova prezentacija može biti u mnoštvu vrsta formata: PDF, HTML, JSON itd. Konačni rezultat prikaza vjerojatno će biti korisničko sučelje (UI) - dio "Klijenta".

Za većinu stranica na webu prikazi će biti HTML oblikovani u CSS i JS. Ali možemo implementirati PDF-ove ponašanja korisnika na Travel digitalnom proizvodu kako bismo svim zaposlenicima pokazali kako i ljudi koriste njihovu web stranicu.

Kontroler

"Objekt unutar aplikacije koji usmjerava promet, s jedne strane postavljajući upit modelima za određene podatke, a s druge strane organiziranje tih podataka (pretraživanje, sortiranje) u oblik koji odgovara potrebama datog prikaza."

Kontrolor je "Maestro". Vodi brigu o protoku: koristi modele za izradu upita, raščlanjivanje podataka i donošenje odluka u kojem formatu ćete podatke predstaviti.

MVC & Routes ciklus na Rails aplikaciji

Pa zamislite da radimo u Travel Startupu. Dio proizvoda predstavlja putopiscima popis sjajnih članaka o putopisnim pričama i savjetima.

Samo razmišljajte iz perspektive putnika. Otiđete www.worldpackers.com/articlesi vidite lijepu stranicu s gomilom sjajnih članaka.

Kada upišete ovaj URL u preglednik, on upućuje zahtjev poslužitelju. Na poslužitelju imamo web aplikaciju Rails. Rails usmjerivač provjerava postoji li unos koji odgovara traženom URL-u.

Samo trebamo konfigurirati rute za ovu liniju:

Ovo će stvoriti RESTful rute za članke. Ako pokrenemo bundle exec rake routes, prikazat će popis stvorenih putova.

HTTP glagol može biti GET, POST, PATCH, PUT, ili DELETE. A znamo kako Rails preslikava svaku PATHudesno controlleri action. Više pročitajte ovdje.

U našem slučaju, poslužitelj će primiti /articlesput i GETkao HTTP glagol. Mapirat će se ArticlesControlleri indexdjelovati.

U kontroleruArticlesController koristimo modelArticle za dobivanje svih članaka u bazi podataka i prikazindex.html.erb kao prikaz poslužitelja (UI).

Prema dogovoru, ovaj kontroler će prikazati prikaz u views/articles/index.html.erb. U osnovi, to je obična HTML datoteka koju pokreće Ruby.

Ciklus zahtjeva i odgovora Rails jedan je od prvih koncepata koje trebate razumjeti kad započnete učiti web razvoj.

Korisnik radi stvari (zahtjev poslužitelju), aplikacija Rails ima usmjerivač za mapiranje URL staze u desni kontroler. U upravljaču možemo sve raditi s modelom (ili više njih) - što znači dobivanje, spremanje, uređivanje, brisanje podataka - i prikazivanje prikaza korisniku.

To je sve!

Ovdje smo puno naučili. Nadam se da ćete cijeniti sadržaj i naučiti više o tome kako MVC arhitektura i usmjeravanje rade na Rails-u.

Ovo je još jedan korak naprijed na mom putu ka učenju i svladavanju Railsa i web razvoja. Dokumentaciju mog cijelog putovanja možete pogledati ovdje u mojoj publikaciji Renaissance Developer .

Ako želite cjeloviti tečaj za Ruby and Rails, naučite stvarne vještine kodiranja i gradite projekte, isprobajte Jednomjesečni Ruby Bootcampi Rails Bootcamp . Vidimo se tamo ☺

Zabavite se i nastavite učiti i kodirati.

Moj Twitter i Github. ☺