短文:前後端怎麼傳?

這是一篇非常簡單的廢文。主要是為了呼應前面的文章。

TL;DR

一般來說,請不要讓後端直接給前端 HTML 文字

理由

  1. 前端的呈現與處理不一定 OK
  2. 後端改 HTML 也很麻煩
  3. 伺服器的資源不是這樣用的
  4. 這麼做會有 XSS 的疑慮

後端最好只應該給呈現所必要的資訊。

舉個栗子

例如說:如果需要把資料變成表格,盡量避免後端這樣給:

<table><tr><td>Foo</td><td>1</td></tr><tr><td>Bar</td><td>2</td></tr></table>

如果要後端這樣給,你知道什麼是什麼嗎?當你發現自己需要 <thead> 時怎麼辦?就算後端願意處理,後端的 API 也會越傳越肥。

因此……你應該要後端這麼傳:

[{"name":"Foo","value":"1"},{"name":"Bar","value":"2"}]

這樣前端就比較好決定怎麼呈現了;後端也只要給一個簡單的結構。清潔溜溜。

對了對了,記得 Content-Type Header 要給 application/json 喔。

例外

有原則就有例外。有些情況應該給 HTML 字串:

  1. 如果這是用戶輸入,必須照實呈現時。
  2. 如果來自這是所見即所得編輯器(WYSIWYG)的輸入時。