iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 7
0
自我挑戰組

Ruby on Rails 新手的30個問題!系列 第 7

Day_07 session ?

嗨!各位朋友大家好,打給後,歹嘎吼,胎尬喉,我是阿圓,有請今天的 one piece:

(突然發現我居然沒有放過魯夫的正面!囧)
之前上課時,有關於session與cookie的概念一直弄的很模糊,想到之後在部落格上可能會用到,所以嘗試來解釋一下!

session ?

先來延續之前MVC架構的比喻,當我對餐廳點菜的時候,相當於我發了一個request,而廚房,也就是server,會回復我一個response。

但是!http是不存在狀態一說的,也就是說,我每次到餐廳點菜,對於廚房來說,我就是一個新的顧客,即使我每次都點一樣的菜,我還是沒辦法跟廚房說:“給我來一份老樣子!”,因為廚房根本不記得我是誰,也不會記得我平常點了什麼,因為他記不住我的狀態!

更極端一點的例子是,當我點了第一道菜,想要再點第二道的時候,廚房就認不出我了!

而為了讓我們的 server 記住我的狀態,session 就出現了!

session 是什麼?他是能夠讓 request 變成有狀態的一種機制,有點像廚房發了張紙條給我,裡面記了我點的所有菜,最後只要把這張紙條交給廚房,這樣他就知道我點了哪些東西了。

而實作 session 機制的方法有很多,以下介紹兩種:

第一種是把狀態附在網址裡,一起送給 server

先來看一個網站 GitHub Jobs ,上面會有兩個條件分別可以打入關鍵字和工作所在的地區,用來讓你搜尋想要的工作。

而當我輸入搜尋條件,並按下送出:

有看到網址的變化嗎?


使用cookie

而第二種,也是很常使用的一種,所謂 cookie,有點像是你去餐廳點餐後的明細單,他記錄了你點的所有菜,可以給服務生來做確認。

今天先簡單講到這裡我們明天再來細細說明!

感謝各位看到這邊,上述比喻是我自己想出來的,若有任何缺漏的或是有其他建議,請各位不吝指教!我們明天見!


參考文章

白話 Session 與 Cookie:從經營雜貨店開始


上一篇
Day_06 routes? (2)
下一篇
Day_08 cookie?
系列文
Ruby on Rails 新手的30個問題!30

尚未有邦友留言

立即登入留言