# 代碼參數里的 payload 究竟是什么意思
代碼里的 payload 究竟是什么東西。
隨便在 Github 搜 payload,就能獲得成千上萬的代碼( https://github.com/search?p=1&q=payload&type=Code&utf8=? ),其中以C和C++語言居多。
根據詞典里的解釋,payload指的是
1. 有效載重
2. 負載
3. 人事費
4. 彈頭內的炸藥
5. 火箭所載彈頭
What?? 完全不能代入到代碼里去理解啊,這些參數難道是計算彈頭內的炸藥含量的么?在一番Google之后,終于在 stackexchange 找到了一份還算靠譜的[答案](http://programmers.stackexchange.com/questions/158603/what-does-the-term-payload-mean-in-programming)。
首先解釋一下什么是 payload,payload 在這里卻是可以理解為`有效載重`,但是這只是字面意思。對于程序員來說,有效載重究竟是個什么玩意兒,又是一個新的問題(調用棧又多了一層……)。
要解釋什么是有效載重,就得說到貨運行業。比如有一位客戶需要支付一筆費用委托貨車司機運送一車石油,石油本身的重量、車子的重量、司機的重量等等,這些都屬于`載重(load)`。但是對于該客戶來說,他關心的只有石油的重量,所以石油的重量是`有效載重`(pay-load,也就是付費的重量)。
**所以抽象一下,payload 可以理解為一系列信息中最為關鍵的信息。**
回到代碼中,舉一個最簡單的例子,一個 ajax 請求返回一個 JSON 格式的對象:
~~~
{
status: 200,
hasError: false,
data: {
userId: 1,
name: 'undefined'
}
}
~~~
這里的 data 就是 payload,也就是關鍵信息。而 status、hasError等信息是load,雖然也是信息,但相對沒有那么重要。
說到這里感覺load和payload的關系有點像信息與元信息的關系,感興趣的同學可以看看知乎上一篇講meta的文章,很有啟發性。