什么是experss ?
express是一个基于node.js平台,极简高效开发的web开发框架
对于nodejs来说,express是一个第三方模块,支持丰富的api,强大而灵活的中间件特性
第一步 创建项目并初始化
创建一个新文件夹,在此目录下运行 npm init --yes命令来生成package.json文件
第二步 下载express包
本地安装 运行 npm i express
第三步 快速创建web服务器
//导入express
const express = require('express')
//调用express得到app
const app = express()
第四步 定义路由
// 定义路由
app.METHOD(PATH, HANDLER)
其中 :
app是express实例 ( const app = express() );
METHOD是一个http请求方法 全小写格式,例如:post,get,delete等
PATH是请求路径
HANDLER是当路由匹配到时需要执行的处理函数 (req,res) => {}
第五步 使用listen监听端口号 启动web服务
//监听端口号,启动 Web 服务
app.listen(3000, () => {
console.log('服务器启动成功,请在http://localhost:3000中访问....')
})
示例:
express写get 接口
//导入
const express = require('express')
//调用
const app = express()
app.use(express.static('public'))
//get接口
// req => request:本次请求
// res => response : 本次响应 每一次受到浏览器的请求,就会执行一次回调
app.get('/getapi', (req, res) => {
// 直接返回对象
console.log('接收到的参数是', req.query)
//结束本次请求,设置响应体:返回给用户内容
res.send({ message: "success" })
})
//监听端口号,启动 Web 服务
app.listen(3000, () => {
console.log('服务器启动成功,请在http://localhost:3000中访问....')
})
express写post 接口
post接口与get请求不同在于 : 它的参数一般是通过请求体来传递的.content-type用来约定请求体中保存的数据格式
content-type常见有三种取值:
content-type的值 | 表示请求体的数据格式 |
application/x-www-form-urlencode | 普通键值对象 |
application/json | json对象 |
multipart/form-data | 上传文件 |
post接口-普通键值对
//导入
const express = require('express')
//调用
const app = express()
//使用中间件
app.use(express.static('public'))
app.use(express.urlencoded () )
//post接口 普通键值对
app.post('/post', (req, res) => {
//可以通过req.body来获取post传递的键值对
console.log('接收到的参数是', req.body)
//结束本次请求,设置响应体:返回给用户内容
res.send({ message: "success" })
})
//监听端口号,启动 Web 服务
app.listen(3000, () => {
console.log('服务器启动成功,请在http://localhost:3000中访问....')
})
post接口-JSON格式
//导入
const express = require('express')
//调用
const app = express()
app.use(express.json())
//会自动加入req.body属性,这个属性中就包含了post请求所传入的参数
//用来处理JSON格式的数据
//post接口 JSON
app.post('/postJSON', (req, res) => {
console.log('接收到的参数是', req.body)
//结束本次请求,设置响应体:返回给用户内容
res.send(req.body)
})
//监听端口号,启动 Web 服务
app.listen(3000, () => {
console.log('服务器启动成功,请在http://localhost:3000中访问....')
})
post接口-form-data文件上传
如果post涉及文件上传操作,则需要额外使用multer第三方这个包(不属于express)来获取上传的信息
Multer 是一个 node.js 中间件,用于处理multipart/form-data类型的表单数据,它主要用于上传文件
//导入
const express = require('express')
const multer = require('multer')
//调用
const app = express()
const upload = multer({ dest: 'uploads/' })
//上传的文件会保存在这个目录下
//uploads表示一个目录名,也可以设置成其它
//如果当前目录下没有uploads,它会自动创建uploads这个文件夹
app.use(express.static('public'))
//post接口 文件上传
app.post('/publish', upload.single('cover'), (req, res) => {
console.log('接收到的参数是', req.body)
//结束本次请求,设置响应体:返回给用户内容
res.send(req.body)
})
//监听端口号,启动 Web 服务
app.listen(3000, () => {
console.log('服务器启动成功,请在http://localhost:3000中访问....')
})