REST & Controller 命名慣例

Posted by Anthony Chao on 2019-09-13

首先來聽首歌吧!
Yes
雖然我知道聽搖滾的人不多,但還是想介紹個覺得不錯的好歌給大家聽聽 ~ 如果不喜歡搖滾的就慎入喔 XD


REST

今天終於來到 Rails Guide 的另一篇文章

在最一開始,文章中就提到了 REST 這個奇怪的字,他是什麼呢?

他的全名是 Resource Representational State Transfer,它的概念是把網址都當作一種資源,而對這些資源使用不同的動作會有不同的結果

沒有使用 REST 設計概念的網頁,其實網址命名就是隨人所好,像是下面這樣

1
2
3
商品列表資訊  GET  /getAllItems
新增商品 GET /addItem
看第一號商品 GET /getItem/1

那如果使用 REST 方式設計的網站呢,通常會長得像這樣

1
2
3
商品列表資訊  GET  /items
新增商品 POST /items
看第一號商品 GET /items/1

至於這些動作分別該對這個網址做什麼,RFC有大致規範,因此其實是可以預期的到會得到怎樣的結果


Controller 命名慣例

在 Rails 中 Controller 的命名也有慣例存在:==最後一個單字要是複數==
比方說,想要做一個叫做 qoo 的 controller,他的 class 應該叫做 QoosController,如果是兩個以上的單字組成的,就是最後一個單字要是複數,ex. SiteAdminsController

當然也是可以不甩他的命名慣例,但最後要找地方改成你自己的設定就很麻煩~

在 Rails 中的每個 controller 都繼承自 ApplicationController 那他又繼承自 ActionController::Base,在這裡面已經內建很多預設給 controller 使用的方法

接下來稍微講一下 controller 的運作.如果今天我的 controller 長這樣:

1
2
3
4
5

class QoosController < ApplicationController
def new
end
end

那今天有個人進到 qoos/new 的頁面時,Rails 就會做出一個 QoosController 的實體並呼叫這個實體的 new 方法,那這個網頁會正常運作嗎? 這要取決於你的 app/views/qoos 資料夾有沒有一個 new.html 開頭的檔案,還記得這裡有個慣例是他會去找 views 裡面跟 controller 同名的資料夾嗎?忘記的人請去看一下前幾天的文章 ~

今天就先寫到這裡囉!明天見~

參考資料

Rails Guide

休息(REST)式架構?





prevent_hack