Http請求資料格式

何凱發表於2019-02-16
  • Content-Type,內容型別,一般是指網頁中存在的Content-Type,用於定義網路檔案的型別和網頁的編碼,用來在程式間傳送內容相關的編碼資訊,資料型別資訊,前端以何種資料格式傳遞給後端。
  • Accept,代表傳送端(客戶端)希望接受的資料型別。
  • Http content-Type有很多種,點選檢視,這裡看集中常見的型別。

1.application/x-www-form-urlencoded

  • 最常見的請求格式,原生form表單請求結構,以鍵值對的形式傳遞預設會以這種方式;提交的資料按照 key1=val1&key2=val2 的方式進行編碼,keyval 都進行了 URL 轉碼。大部分服務端語言都對這種方式有很好的支援

    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    Content-Type:application/x-www-form-urlencoded
    Form Data
    first_name=i&last_name=i

2.multipart/form-data

  • 常見的 POST 資料提交的方式。這種方式一般用來上傳檔案,各大服務端語言對它也有著良好的支援。一般會生成了一個 boundary 用於分割不同的欄位,為了避免與正文內容重複,boundary 很長很複雜。然後 Content-Type 裡指明瞭資料是以 mutipart/form-data 來編碼,本次請求的 boundary 是什麼內容。訊息主體裡按照欄位個數又分為多個結構類似的部分,每部分都是以 --boundary 開始,緊接著內容描述資訊,然後是回車,最後是欄位具體內容(文字或二進位制)。如果傳輸的是檔案,還要包含檔名和檔案型別資訊。訊息主體最後以 --boundary-- 標示結束

    Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
    
    ------WebKitFormBoundary7MA4YWxkTrZu0gW
    Content-Disposition: form-data; name="key"
    
    value
    ------WebKitFormBoundary7MA4YWxkTrZu0gW
    Content-Disposition: form-data; name="testKey"
    
    testValue
    ------WebKitFormBoundary7MA4YWxkTrZu0gW
    Content-Disposition: form-data; name="imgFile"; filename="no-file"
    Content-Type: application/octet-stream
    
    
    <data in here>
    ------WebKitFormBoundary7MA4YWxkTrZu0gW--

3.application/json

  • 現在以JSON格式作為請求頭越來越主流。

    Accept:application/json, text/plain, */*
    Content-Type:application/json;charset=UTF-8
    Request payLoad
    {name: "m", password: "hkkk", email: "123"}

相關文章