使用 express-validator 省去 JSON parse 處理

最近我同事想說要讓處理回應的地方可以乾淨一點不然每次參數丟進來都要使用 JSON.parse() 處理一次感覺髒髒的,所以我就使用 express-validator 寫了一個簡單的範例來 demo 這個部分。有需要的人可以參考一下。

const express = require('express');
const { query } = require('express-validator');
const port = 3000;

const app = express();
app.use(express.json());

app.get(
    '/query',
    query('json').customSanitizer(value => {
        return JSON.parse(value);
    }),
    (req, res) => {
        console.log('GET query: ', req.query)
        return res.json(req.query);
    },
);

app.listen(port, () => {
    console.log(`Example app listening at http://localhost:${port}`)
})

使用 curl 測試 API 可以看到回應有順利被成功解析成為 JSON object 型態

$ curl -X GET -G --data-urlencode "json={\"A\":\"B\"}" http://localhost:3000/query
{"json":{"A":"B"}}