REST, Rails consol

Van egy mondás, hogy ne legyünk restek REST-et használni. No de mi a fene ez a REST?  A REST (Representational state transfer) nem egy új keletű dolog, mert már a HTTP protokoll megszületése óta effektíve létezik, csak nem használták az emberek ilyen formában. A REST-et 2000-ben egy  Roy Fielding nevű ember hívta életre. Ő azt mondta, ki, hogy ha anno a HTTP protokollba beleépítették azt a tulajdonságot, hogy a header részbe beletudjuk azt rakni, hogy milyen típusú kérést küldünk, akkor ezt használjuk is. Van ugye egy másik modellünk a CRUD(Create, Read, Update, Delete), most már van RESTünk is. Nosza párosítsuk őket. 

REST

Nagy vonalakban ennyi. Most nézzük, hogy működik ez a Railsben.

 

Minden egyes controllernek megtudjuk adni, hogy használja-e a REST elveket. Ezt a config/routers.rb-ben tudjuk megadni.

 

map.resources :controller_neve

 

Innentől kezdve, hogy ha hivatkozni akarunk a controlleren belüli metódusokra, akkor a következőket kell használni: 

A példában, mondjuk van egy users controllerünk. Ekkor ugye a routers.rb-be beírjuk, hogy:

 

map.resources :users

 

ezután a hivatkozások:

Rest-rails

Az alap felállás ez, viszont van egy megjegyezni valóm. Mégpedig, hogy az url végződés helyett, a _path végződést használja mindenki, mivel ha az url-nél marad, akkor  a szerver futtatásának helyét írja be oda pl ha localhoston fut akkor http://localhost/users/valami és így ha az ember berakja egy domain mögé, akkor is marad a localhost, ugye ami nem jó. Viszont, ha a patht használja, akkor megmarad a base domain (mindig ami), és azután illeszti a címeket. Szóval egy szó mint száz, a példánál pl user_path(@user)-t kell használni.

 

Jogosan jön a kérdés, hogy oké ez szép és jó, de mi van a CRUD-on kívüli metódusokkal?  

Kétféleképpen adhatunk hozzá. Az egyik általánosan használható RESTen kívül is.

Bármikor létrehozhatunk “nevezett” Named Routeokat. Például létre akarunk hozni egy users controlleren belül lévő auth metódusra, egy egyedi routeot. Ehhez annyit kell csinálnunk, hogy 

 

map.auth ‘auth/', :controller=>"users", action=>"auth"

 

ezután erre auth_path néven bármikor bárhonnan tudunk hivatkozni. Ez miért jó? Azért mert nem kell mindig leírnunk hogy :controller=>”users”, action=>”auth”, hanem csak auth_path. Hát nem rövidebb?

 

Általánosságban tehát, úgy kell ezt használni hogy

 

map.hivatkozas_neve “url_formája” (ide lehet akár belerakni :id it is vagy bármit, pl “users/:id”) , :controller=>”controller_neve”, :action=>”metodus_neve” akár :id-t is belerakhatunk, vagy bármit.

 

A másik módszer ahogy belerakhatunk CRUDon kívüli metódusokat a RESTbe:

 

map.resources :users, :collection=>{auth =>:get}
 
 

ennyi, ezt lehet még cifrázni, de azt majd ha szükség lesz rá, kezdésnek ennyi is elég, persze a collection részbe, ami egy hash, felsorolhatunk több metódust is, vesszővel elválasztva, metódus neve és REST típus szerint.

 

Én speciel a Named Routeokat szoktam használni, mert valahogy kényelmesebb.

 

Nézzük röviden a címben szereplő másik dolgot.

 

Consol: 

 

Terminálban, script/consol, netbeansben jobb gomb, Rails consol.

Mire jó ez? A consolon belül minden működik ami kódban, így különböző praktikákat le tudunk tesztelni, meg tudjuk nézni, hogy adott pl. findra létezik-e az az elem, require-nál megtalálja-e az elemet a rendszer, stb.

 

 

 

júl06

2 Responses to “REST, Rails consol”

  1. Nagyon klassz a blog. Még számomra is követhető, érthető. Csak ne múljon el a lelkesedésed, mert folyamatosan követni fogom az írásokat. :)

  2. Lelkesedéssel nem lesz gond, max idővel, de igyekszem azért heti 1-2 posotot írni, amikor több időm lesz akár többet is.
    Jah és köszi ;)

Leave a Reply