node.js接口需规范请求参数接收、响应格式与错误处理:路径参数用req.params、查询参数用req.query、json数据经body-parser解析后从req.body读取;成功响应统一为{code:0,message:"ok",data:{}}结构;错误响应推荐用qoder内置errorhandler中间件捕获error实例并转为标准格式。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

设计Node.js接口请求和返回格式,核心是让前端能稳定解析、后端逻辑清晰可维护、错误可定位。Qoder在快马平台生成的Node.js项目默认采用Express框架,其请求处理和响应结构有明确约定,不按规范会导致前端收不到数据或解析失败。
请求参数接收方式
第一步:区分参数来源——URL路径参数、查询字符串(query)、请求体(body)必须用不同方法取值。
路径参数用req.params,比如/user/:id中的:id;查询参数用req.query,如?page=1&limit=10;POST/PUT请求的JSON数据必须经body-parser中间件解析后才能从req.body读取。
注意:【未配置body-parser时req.body永远是undefined】,快马平台虽默认启用,但若手动删了依赖或改了中间件顺序,就会卡在这一步。
第二步:对req.body做基础校验。例如用户注册接口收到{"email":"a@b.com","password":"123"},需检查email是否含@、password长度是否≥6。Qoder生成的模板里已预留validateInput函数入口,直接填入校验逻辑即可。
标准JSON响应格式
所有成功响应统一用res.json(),禁止混用res.send()或res.status(200).send()。
返回结构固定为:{ "code": 0, "message": "ok", "data": { ... } }。其中code为数字型状态码(0表示成功),message是人类可读提示,data字段只在有业务数据时存在且必须为对象或数组——不能是字符串、布尔值或null。
示例:获取用户列表应返回{"code":0,"message":"ok","data":[{"id":1,"name":"张三"}]},而非{"users":[{"id":1}]}这种无统一外壳的格式。
错误响应统一处理
方法一:全局错误中间件拦截
在Express应用末尾添加app.use((err, req, res, next) => { res.status(500).json({ code: -1, message: err.message || '服务器内部错误', data: null }); });。此方式覆盖未被捕获的异常,但无法区分400/401/403等业务错误。
方法二:主动抛出自定义错误并由中间件捕获
在路由处理函数中写if (!user) throw new Error('用户不存在');,再配合Qoder快马平台内置的errorHandler中间件,它会自动将new Error('xxx')转成{"code":404,"message":"用户不存在","data":null}。该中间件已预置,无需额外安装。
【抛出Error实例而非字符串,否则中间件无法识别HTTP状态码】
方法三:显式返回特定状态码
登录失败时直接写return res.status(401).json({ code: 401, message: '密码错误', data: null });。这种方式最直白,适合简单场景,但重复代码多。Qoder模板中已封装sendError(res, 401, '密码错误')工具函数,推荐调用。
JWT认证请求头规范
第一步:前端必须在HTTP请求头携带Authorization: Bearer <token></token>,空格不可省略,Bearer首字母大写。
第二步:后端验证中间件提取token时,会自动截取Bearer 后的内容。快马平台生成的authMiddleware.js已实现此逻辑,无需改动。
第三步:验证失败必须返回401 Unauthorized状态码,且响应体格式仍遵循{code:401,message:"未授权",data:null}。Qoder的JWT中间件默认触发此行为。
第四步:刷新令牌(refresh token)需单独设计接口,如POST /auth/refresh,接收{ "refreshToken": "xxx" },返回新accessToken和过期时间。该接口不校验Authorization头,而是从req.body读取refreshToken。







