Node.js Express后端接口开发:路由、传参与文件上传详解
本文详解Node.js中使用Express框架开发后端接口的完整流程。涵盖路由基本概念、GET与POST请求的参数解析(包括表单、JSON及文件上传),并介绍利用multer中间件处理文件上传的具体实现,帮助开发者快速掌握Express核心功能。
在开发后端接口之前,需要明确接口的定义。在前端开发语境中通常称为“接口”,而在后端开发中则对应“路由”的概念,二者本质上指向同一机制。
路由与接口的对应关系
路由(Routing)由URL路径标识与特定的HTTP方法(如GET、POST等)共同构成,负责处理应用对客户端请求的响应逻辑。每个路由可配置一个或多个处理器函数,当请求匹配该路由时,相应的处理函数将被触发执行。
// 引入express
const express = require('express')
//创建express实例存入变量app ,调用express
const app = express()
// 定义路由
//METHOD:是一个http请求方法;PATH:请求路径;HANDLER:是当路由匹配到时需要执行的处理函数
app.METHOD(PATH, HANDLER)接口数据传递机制
前端通过Ajax向服务器接口发送请求时,依据HTTP协议规范,请求结构包含三个核心部分:
- 请求行:记录请求方式与目标地址,并可附加查询字符串格式的数据。
- 请求头:包含多种元数据,其中content-type字段用于约定请求体(Body)中数据的格式。
content-type常见取值包括:

- 请求体:承载本次请求携带的具体参数。后端解析这些参数的具体方式,取决于请求头中
content-type字段所指定的格式。
GET请求处理
express框架具备自动收集GET类型接口中URL查询字符串参数的功能,并将其封装至req对象的query属性中,开发者可直接访问该属性获取数据。
app.get('/get',(req,res) => {
// 输出请求参数
console.log(req.query)
//结束本次响应并返回内容
res.send('hello world!')
})POST请求:普通键值对
当请求头中的content-type设置为x-www-form-urlencoded时,表示前端正在提交普通的简单键值对数据。
// 使用中间件获取普通键值对参数
app.use(express.urlencoded())
app.post('/add',(req,res) => {
// 输出请求参数
//app.use(....)之后,在res中就会多出一个属性res.body,里面存放着键值对参数
console.log(req.body)
//结束本次响应并返回内容
res.send("hello world!")
})POST请求:JSON格式
在POST请求中,若需传递结构复杂(如多级嵌套)的参数(例如表单数据),可采用JSON格式进行上传。
// 使用中间件获取JSON参数
app.use(express.json())
app.post('/post-json',(req,res) => {
// 输出请求参数
console.log(req.body)
//结束本次响应并返回内容
res.send("hello world!")
})POST请求:Form-Data文件上传
若POST请求涉及文件上传,服务器端需额外引入第三方multer包(非Express内置模块)来处理上传信息。
// 引入包
const multer = require('multer')
// 配置 上传的文件会保存到unloads这个文件夹下
const upload = multer({dest:'unloads/'})
//upload.single表示单文件上传,cover表示本次上传的数据
app.post('/post-file',upload.single('cover'),(req,res) => {
// req.file记录了上传文件的信息
console.log(req.file)
//结束本次响应并返回内容
res.send({message:"ok"})
})- 若当前目录不存在uploads文件夹,系统会自动创建该目录。
upload.single仅负责处理文件上传逻辑。开发者仍可通过req.body属性获取其他非文件类的普通参数。
总结
至此,关于Node.js使用Express框架开发后端接口的内容介绍完毕。如需了解更多相关技术细节,建议查阅本站往期文章或继续浏览后续相关内容,感谢支持。
Node.js中使用path模块获取文件名
2026-11-05 15:15:15
Node.js中url模块与querystring模块处理查询字符串的区别
2026-11-05 15:04:45
JavaScript(JS)主要用来做什么
2026-11-05 10:10:47
怎么修改Node.js和npm的全局安装路径与缓存目录
2026-11-04 19:48:28
NW.js 常见问题排查:Node 模块加载失败与版本兼容解决
2026-11-04 11:22:45
