關於HTTP請求,都是通過URL及參數向後臺發送數據

最近在調試代碼時發現有Request Payload的情況,從網上查一些文件,也都有較多的描述。下面我只是說明一下大家沒有注意的地方

關於HTTP請求,都是通過URL及參數向後臺發送數據。主要方式有GET, POST。對這兩種方式,GET的參數都會放在URL的後面,一般稱之爲query參數。POST的都放在HTTP的報文BODY裏,可以query參數的形式,也可以multipart格式,還有一種JSON格式,即Request Payload格式。

multipart, Request Payload是通過request Header中的ContentType區分的:

multipart格式:ContentType: multipart/form-data;boundary=–xxxxxxx, 注意對multipart的格式都要有boundary做爲BODY中的參數分隔符,(關於該格式的講解以後再寫)

Request Payload格式:ContentType: application/json

在後臺的處理中對這三種格式的處理是不相同的。

GET格式都在URL後面,以key1=value1&key2=value2的KV格式存在,且不會很長(協議規定爲1024個字節,但現在瀏覽器都會適當加長一些)。後臺處理這種參數時可以使用同步處理,因爲報文頭收到後參數也就收全了。

POST時參數也可以使用上面的KV格式存在,但是會放在報文體中。當數據量不大時,一般也會和報文頭一起收到。但數據量大的時會被拆分到多個報文中。因此必須使用異步方式收取。收全後處理同GET相同。

對於multipart格式,需要使用流方式邊收邊解析,因爲有可能是大文件上傳。

對於RequestPayload格式,可能也是異步發送(這個沒有驗證過),但數據量一般不會太大,因此它是一個JSON格式,因此必須等報文收全後才能處理。目前對JSON格式的支持比較普遍,都有相關的函數來解析JSON字符串,直接生成JSON對象,因此這種方式也是最方便的。特別是使用nodejs server時就可以直接在代碼中使用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章