狀況;緣起
在跟著教材執行To-do list清單裡面新增一筆待辦事項時,發現透過GET方法傳送表單的時候,其資料會直接顯示在網址列上,所以通常都會改用POST方法以保持資料的機密性。然而一開始當我們透過req.body這個物件來抓使用者傳送的資料前,教材有提到需要先經過bodyParser提供的方法處裡URL-encoded 格式的請求,但發現好像不懂什麼是URL-encoded。
尋找與嘗試
將URL-encoded相關關鍵字透過google後,瞭解其又稱為Percent-encoding,且專門用於透過HTTP請求來提供HTML表單的資料,最常見的情形大概是當我們有時輸入資料完成後按下送出,網址頁會將我們欲連結的網誌進行編碼,其編碼方式就是URL-encoded,這也是為什麼body-parser這個中介軟體時,明明可以解析像是JSON、XML、Raw等多種格式的資料,我們最後是選擇URL-encoded。此編碼的原理簡單說是先將欲轉碼的字元透過UTF-8轉換成byte stream,接著找到對應之16進位表示法,最後再將每個byte前面新增一個百分比符號做串接,這也是為什麼通常我們送出中文的表單資料後,常常會看到很多百分比符號的原因。
分享與展望
經過這個尋找方法原因相關搜尋,會發現一開始只是要找為什麼後端透過body-parser來解析資料事是選擇URL-encoded,但其實搜尋的過程中又發現了許多問題,像什麼是編碼,什麼是text/xml、什麼是UTF-8,一份網路資源可能又會衍生出多種自己未曾聽過的名詞,這時候聚焦好在當初為什麼產生在致個問題的原因就很重要,以此次的自學經驗,其實做重要的一句話就是URL-encoded為專門用來提交HTML表單的資料,不然都會有種花了一整個下午時間,整個專案卻沒有什麼進展的挫折感。 ,但其他較為陌生的名詞對我這種非本科生而言,當然還是需要另外花時間學習的。
參考資源