请描述在 Express 框架中,实现一个基础表单提交与处理功能的完整流程。
考察说明
考察对 Express 处理表单提交的基本流程和中间件使用的掌握程度。
回答思路
- 【回答框架 1】Express 接收表单数据主要依赖中间件。若表单使用 URL-encoded 格式(默认),需引入 body-parser(Express 4 及以下)或使用内置的 express.urlencoded()(Express 4.16+)。
- 【回答框架 2】在路由处理函数中,通过 req.body 获取已解析的表单字段。例如对于 POST 请求,可定义 app.post('/submit', (req,res)=>{...}),在回调中读取 req.body 的对应字段。
- 【回答框架 3】表单提交方式通常为 POST,需在前端 HTML 中设置 form 标签的 action 为后端路由路径、method 为 'post',并确保字段有正确的 name 属性。
- 【回答框架 4】对于文件上传等复杂场景,URL-encoded 中间件不适用,需使用 multer 等专门中间件处理 multipart/form-data 数据。
- 【关键点 1】使用 express.urlencoded({ extended: true }) 解析表单 URL-encoded 数据。
- 【关键点 2】通过 req.body 访问表单字段值。
- 【关键点 3】前端 form 需设置 method='post' 以及 action 对应路由。
- 【关键点 4】文件上传需要使用 multer 等其他中间件。
- 【易错点 1】忘记引入 body-parser 或 express.urlencoded 导致 req.body 为 undefined。
- 【易错点 2】extended 参数理解错误:extended:true 允许解析嵌套对象,false 只解析字符串或数组。
- 【易错点 3】未设置 form 的 method 或 action 导致请求无法到达正确路由。