你好,我是富士大顆 Aiko
今天假日來談談比較輕鬆的話題 config/routes.rb
內容會帶到:
resource
跟 resources
的差別member
& collection
我們先看這張圖:
(resource from CodeCademy)
URL 用於特定請求的目標,跟 HTTP 方法(method)一起構成 HTTP 請求(request)
URL 是請求的目標,指示伺服器「哪個資源」應該被操作。
HTTP 方法 則指示「如何」操作那個資源。
總之,URL 和 HTTP 方法共同構成一個完整的 HTTP 請求。
URL 指定了我們想要操作哪個資源,而 HTTP 方法則定義了我們對該資源想進行何種操作。所以它們是相關聯但又分開的概念。
URL 是一種用於讓瀏覽器辨別某個資源位置的字串。
一個 URL 通常包含以下部分:
協定(Protocol): 決定資料交換的規則,如何安全和有效地傳輸。例如:http、https。
http(HyperText Transfer Protocol);HTTPS (多的 S 就是 Secure)是經過加密的,對於需要高度安全的網站(例如銀行或電商網站)非常重要。
主機名稱(Domain Name): 是網際網路上各個伺服器的「地址」,例如 google.com
或 wikipedia.org
,瀏覽器會使用 DNS(Domain Name System)將人看得懂的主機名稱解析為電腦才看得懂的 IP 地址(Internet Protocol Address)。
路徑(Path): 資源在伺服器上的實際路徑。如果沒有指定任何路徑,如果輸入 http://example.com
,瀏覽器通常會自動導到主頁,也就是 http://example.com/
。
查詢參數(Query Parameters): 提供額外的輸入或篩選資源。以 ? 開始,主要用於 GET 請求,用於指定要傳遞給伺服器的參數。常見於搜尋引擎查詢、分頁等。
片段(Fragment): 也被稱為錨點(Anchor),定位網頁的某一部分。這以 # 開始,主要用於指定網頁中應該焦點定位的某個部分。例如 http://example.com/page#section1
。瀏覽器會自動滾動到該網頁中與片段對應的部分。這對於長網頁的 UX 很有幫助,因為 user 可以直接跳到他們感興趣的特定區塊,而無需手動滾動。
端口(Port): 不是必要,指定某個網路服務的端口,區分同一台機器上運行的不同服務。這通常是一個數字,例如 HTTP 的預設端口是 80,而 HTTPS 的預設端口是 443。不過這部分在很多情況下都是可以省略的,因為瀏覽器會自動補齊。
HTTP 方法用於指定請求的類型。跟請求是兩件事喔
一個「HTTP 請求」是一個完整的訊息包,通常由客戶端(Client)發送給伺服器,目的是要取得或修改資源。
一個請求通常包括:
總之,「方法」是描述「請求」類型或動作的一個元素,而「請求」則是包含了方法、URL、頭部資訊等多個元素的完整訊息。所以方法是請求的一部分,但兩者不是同一件事。
請求 = 方法 + URL + header + (body),讓 Client 和伺服器能夠溝通和交換資訊。
有了初步的網路概念,終於可以進入主題了(汗)