如題,在看國外YT教學裡面使用TypeScript去定義request的body格式 程式碼如下:
type RequestBody = { text: string };
router.get('/test', (req: Request, res: Response) => {
res.status(200).json({code: 200, message: "OK"});
})
router.post('/test', express.json(),(req: Request, res: Response) => {
const body = req.body as RequestBody;
console.log(body);
res.status(200).json({code: 200, message: "OK", data: body.text});
})
在做測試時,發現我post請求body亂傳一堆東西比如
{ "text": "John",
"age": 999,
"price": 1000
}
他request也沒事,所以這樣定義是方便我們取用body的某些屬性這樣而已嗎?
如果今天我想要強制判斷post的格式不正確,就直接做錯誤處理回傳應該怎麼做才好呢?
還是說不能去規範client端post傳什麼,只能自己去判斷哪些欄位沒有照該欄位型別傳和少傳欄位,這樣去處裡錯誤呢?
你好,TypeScript 定義的 type 其實只是方便開發者知道型別是什麼,在編譯的過程中就會被拿掉了,真正的驗證還是需要另外處理的,以 Express 來說,可以看看 express-validator,我之前也有寫過相關的文章,如果有需要的話也可以參考看看,希望對你有幫助!
另外,比起 Express 我更推薦使用 NestJS,以架構面而言,我認為它在元件的定位上會比 Express 還要直覺,有興趣的話可以參考我的系列文呦。