之前有提到 RESTful 幾個 Method,有些像是 POST、PATCH,是需要在 Request 時,一併送出 body 當作參數給 Server,並且可以在 headers,去設定 content-type 參數的類型,在 Server 就必須依照 Request 來的 type 去做解析,如果是原生處理的話可以會長下面這樣...
const express = require('express');
const app = express();
app.use('/', (req, res, next) => {
if(req.headers['content-type'].indexOf('application/json')!==-1){
// JSON 格式請求體解析
} else if(req.headers['content-type'].indexOf('application/octet-stream')!==-1){
// Raw 格式請求體解析
// ……
} else if(req.headers['content-type'].indexOf('text/plain')!==-1){
// text 文本格式請求體解析
// ……
} else if(req.headers['content-type'].indexOf('application/x-www-form-urlencoded')!==-1){
// URL-encoded 格式請求體解析
// ……
} else {
// 其它格式解析
}
});
app.listen(3000);
而 node 有許多這類型去解析 body 的套件,像是今天提到的 body-parser
,透過這個插件可以解析 JSON、Raw、text、XML、URL-encoded 格式的請求。
首先先安裝 body-parser
npm i body-parser
再來在我們之前那隻 server.js
中,上面加入
const bodyParser = require('body-parser');
// 解析 application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({
extended: false,
}));
// 解析 application/json
app.use(bodyParser.json());
通常加這 2 個就能應付大部分的需求,若是有特別需要處理的在補上就可以了。