URL請求頭(Headers)中Content-Type為不同值時, 後端對應獲取請求體參數的不同方式.
前端發送URL請求之後, 請求的相關內容都通過統一格式封裝在URL請求中, 後端程序收到URL請求之後, 都會首先對URL請求的相關內容進行解析, 不同的後端語言和框架對URL的解析不同.
這裡僅以Node中的Express框架為例.
1 application/x-www-form-urlencoded
解析中間件: body-parser
使用方法: app.use(bodyParser.urlencoded({entended: true}))
默認值, 所有的請求參數會被解析到req.body中
2 multipart/form-data
解析中間件: multer[本質上就是一個解析FormData的中間件]
使用方法: router.post("url", upload.single(), controller.method)
需自行設置, 經multer中間件解析之後, 文本屬性被解析到req.body中, 文件屬性被解析到req.file(單文件上傳)或req.files(多文件上傳)中, 此時的file或files只包含了對文件的描述信息, 二進制數據已經經過multer中間件被存儲到了自定義的位置了. 只有當存儲方式為MemoryStorage(存儲到內存中)時, file對象才會擁有buffer屬性
3 application/json
4 text/xml