[爆卦]http get post差異是什麼?優點缺點精華區懶人包

為什麼這篇http get post差異鄉民發文收入到精華區:因為在http get post差異這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者DarkKiller (System hacked)看板Web_Design標題Re: [問題]...


※ 引述《APE36 (PT鄉民)》之銘言:
: 詢問一下
: POST、GET
: 兩個指令上有何差別呢??
: 因為上網看過資料也沒看到整理出的重點來...

因為包括了定義、實做、慣例,而一般人對於 HTTP GET/POST 與 HTML Form
GET/POST 沒搞清楚,所以你在網路上會看到一堆奇怪的解釋。

: 所以上來發問一下
: 請教高手了解的人可以為我解答下!!
: 謝謝

先講 HTTP GET/POST 的差異:

HTTP 對於 GET 與 POST 的定義在 RFC 2616,重點在第一句:

The GET method means retrieve whatever information (in the form of an
entity) is identified by the Request-URI.

很粗淺的意思是,Request-URI 決定內容。

而 POST:

The actual function performed by the POST method is determined by the
server and is usually dependent on the Request-URI.

一樣,很粗解的解釋是,POST 會在 server 上執行一些功能,這些功能會依照
Request-URI 的不同而不一樣 (/delete 功能當然與 /create 不同)。

也因為 RFC 2616 這樣定義 GET/POST/PUT/DELETE,所以後來有人總算依照這個
定義引出 REST 觀念,這邊先不提。

傳參數的事情:

在 HTTP GET/POST 定義中,並沒有講到參數要怎麼傳。所以在某些地方你還是
看得到各種傳參數的方法。

以 GET 來說:

http://search.books.com.tw/exep/prod_search.php?cat=all&key=steve

這篇文章在 HTTP/1.1 內只傳了「一個」參數,就是 Request-URI。

以 POST 來說,你可以這樣送:

POST /create HTTP/1.1
Host: test.example.com
Content-Length: 10

1234567890

這是合法的 POST request。

再來,定義一套邏輯「傳入多個參數」:

HTTP 只定義了「Request-URI」這一個參數,那麼我們可以「人為」在上面定義
「多參數」的傳遞方式。舉幾個例子來說:

* http://taiwan.cnet.com/crave/0,2000088746,20152221,00.htm
CNET 的人可能把 crave 當作一個參數、後面四組數字又是四個參數,最後的
htm 也是參數。

* http://www.techbang.com.tw/posts/7595-google-said-that-android-40-is-not-flash-adobe-will-not-give-to-see
T 客邦的人可能把 posts 當作一個參數,7595 當作一個參數,後面的字可能
不是參數。

要注意的是,這邊包括了大量的人為定義。並沒有 spec 規定要用 "," 或是 "."
或是任何字當作分隔。我可以這樣定義我自己的「參數」:

* http://test.example.com/telephone/0020000000000
其中第一個 0 我定義是中華電信、第二個 0 我定義是在台北地區所辦的門號,
"2000" 是辦的年份,後面都是流水號,最後一碼是檢查碼。

同樣的道理,放到 POST 裡面也通。你可以自己定義「格式」。反正你亂定義的
結果就是寫 code 切得很辛苦 XD

於是,有一套定義剛好可以拿來用,就是 HTML Form GET/POST:

一般現在都是看 HTML 4.01 裡面的定義,關於 HTML5 Form 的規格,反正還在訂,
如果你沒興趣的話可以先不管他。

定義在「17.13.4 Form content types」這邊,也就是常見的 & 分隔以及 escape
規定。

因為 HTML Form 送出來是一套標準,於是大多數的語言都有 library 可以處理
這個定義方式。像是 PHP 的 $_GET、$_POST 會自己切好放到 array 內。

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.242.135.97

你可能也想看看

搜尋相關網站