http請求中的payload


概念:

payload,翻譯過來是有效載荷

payload 字面意思“有效載荷,有效負荷,有效載重”。

要解釋什么是有效載重,用貨運行業打個比方:
比如有一位客戶需要支付一筆費用委托貨車司機運送一車石油,石油本身的重量、車子的重量、司機的重量等等,這些都屬於載重(load)。
但是對於該客戶來說,他關心的只有石油的重量,所以石油的重量是有效載重(payload,也就是付費的重量)。 所以抽象一下,payload 可以理解為一系列信息中最為關鍵的信息。 對於程序員來說就是在程序中 起關鍵作用的代碼。 回到代碼中,舉一個最簡單的例子,一個 ajax 請求返回一個 JSON 格式
{
    status: 200,
    hasError: false,
    data: {
        userId: 1,
        name: 'undefined'
    }
}

這里的 data 就是 payload,也就是關鍵信息。而 statushasError等信息是load,雖然也是信息,但相對沒有那么重要。

安全方面:

通常在傳輸數據時,為了使數據傳輸更可靠,要把原始數據分批傳輸,並且在每一批數據的頭和尾都加上一定的輔助信息,
比如數據量的大小、校驗位等,這樣就相當於給已經分批的原始數據加一些外套,這些外套起標示作用,使得原始數據不易丟失,
一批數據加上“外套”就形成了傳輸通道的基本傳輸單元,叫做數據幀或數據包,而其中的原始數據就是payload

應用:

后台獲取放在Request Payload中的值

后台要想從Request Payload中得到自己想要的數據,就要從流中來獲取數據,具體的代碼為

private String getStringFromStream(HttpServletRequest req) { 
ServletInputStream is; 
try { 
is = req.getInputStream(); 
int nRead = 1; 
int nTotalRead = 0; 
byte[] bytes = new byte[10240]; 
while (nRead > 0) { 
nRead = is.read(bytes, nTotalRead, bytes.length - nTotalRead); 
if (nRead > 0) 
nTotalRead = nTotalRead + nRead; 
} 
String str = new String(bytes, 0, nTotalRead, "utf-8"); 
return str; 
} catch (IOException e) { 
e.printStackTrace(); 
return ""; 
} 
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM