官网 安装 Express - Express 中文文档 | Express 中文网 (expressjs.com.cn)
第二步:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Example app listening on port 3000!');
});
启动服务器:node app.js
访问localhost:3000 可以访问
实现一个简单的get接口
const express = require('express');
const app = express();
app.get('/login', (req, res) => {
res.setHeader('Access_Control_Allow_Origin',"*") // *表示都可以跨域访问
res.send({
code:200,
message:'成功'
});
});
app.listen(3000, () => {
console.log('Example app listening on port 3000!');
});
获取查询字符串
什么是查询字符串? url地址后面的这些:
使用req.query获取查询字符串
const express = require('express')
const app = express()
app.listen(3000, () => {
console.log('服务器启动成功了')
})
app.get('/login', (req, res) => {
// 允许该接口跨域访问
res.setHeader('Access-Control-Allow-Origin', '*') // *表示都可以跨域访问
console.log(req.query)
const {username, password} = req.query
if(username === 'admin' && password === '123456') {
res.send({
code: 200,
message: '成功'
})
} else {
res.send({
code: 400,
message: '用户名或密码错误'
})
}
})
获取到的查询字符串:
获取动态参数
url/:id/:name/:age :后面的就叫动态参数
使用req.params获取动态参数
app.get('/getUser/:id', (req, res) => {
// 允许该接口跨域访问
res.setHeader('Access-Control-Allow-Origin', '*')
console.log(req.params)
res.send({
id: req.params.id,
name: 'zs',
age: 10
})
})
实现post请求
- 处理所有的options请求
app.options('*', (req, res) => {
// 允许CORS跨域的域名
res.setHeader('Access-Control-Allow-Origin', '*')
// 允许CORS跨域的请求方式,默认只有GET,POST
res.setHeader('Access-Control-Allow-Methods', 'GET,POST,PUT,PATCH,DELETE')
// 允许CORS跨域请求的请求头
res.setHeader('Access-Control-Allow-Headers', 'content-type')
res.send(null)
})
- 发送post请求
app.post('/login', (req, res) => {
res.setHeader('Access-Control-Allow-Origin', '*')
res.send({
code: 200,
message: '登陆成功'
})
})
-
如果要拿到post请求的请求体
- 使用
req.body - 必须使用一个**内置的中间件
**express.json()
- 使用
app.use(express.json())
...
...
app.post('/login', (req, res) => {
res.setHeader('Access-Control-Allow-Origin', '*')
console.log(req.body)
res.send({
code: 200,
message: '登陆成功'
})
})
服务器端接收不同类型的请求体,使用的方式是不同的
-
urlencoded --->
app.use(express.urlencoded({extended: false})); -
application/json --->
app.use(express.json());-- 没有演示 -
form-data ---> 服务器端使用第三方模块处理(
multer)
间件
const express = require('express')
const app = express()
// app.use(中间件) // 所有的请求之前都会调用中间件
const middle = function (req, res, next) {
console.log('我是中间件')
// 处理完一定要记得调用next
next()
}
app.use(middle) //此为全局中间价
app.listen(3000, () => {
console.log('服务器启动了')
})
app.get('/login', (req, res) => {
res.send('登录')
})
app.get('/user', (req, res) => {
res.send('用户')
})
app.get('/index', (req, res) => {
res.send('首页')
})
用中间件解决跨域
const express = require('express')
const app = express()
// app.use(中间件) // 所有的请求之前都会调用中间件
const AllowCrossDomain = function (req, res, next) {
// 允许CORS跨域的域名
res.setHeader('Access-Control-Allow-Origin', '*')
// 允许CORS跨域的请求方式,默认只有GET,POST
res.setHeader('Access-Control-Allow-Methods', 'GET,POST,PUT,PATCH,DELETE')
// 允许CORS跨域请求的请求头
res.setHeader('Access-Control-Allow-Headers', 'content-type')
// 处理完一定要记得调用next
next()
}
app.use(AllowCrossDomain)
app.listen(3000, () => {
console.log('服务器启动了')
})
app.post('/login', (req, res) => {
res.send({
code: 200,
message: '登陆成功'
})
})
app.get('/user', (req, res) => {
res.send('用户')
})
app.get('/index', (req, res) => {
res.send('首页')
})
cors解决跨域
jsonp
express内置的中间件
application/json post请求是一种HTTP请求方式,其中请求的数据格式为JSON格式。这种请求方式通常用于向服务器提交数据,例如提交表单数据、上传文件等。在请求头中,Content-Type字段的值为application/json,表示请求体中的数据为JSON格式。服务器端需要解析JSON数据,才能正确处理请求。
application/x-www-form-urlencoded是常见的web 表单提交方式,参数通常在请求body中以key=value&key=value将键值对的参数用&连接起来方式传递。
Express高级用法和技巧
- 使用路由中间件 对于一些大型应用程序来说,路由代码的数量可能很大,这将使代码难以维护。使用路由中间件可以更好地组织和管理路由。下面是一个例子:
// userRoutes.js
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('Get all users');
});
router.post('/', (req, res) => {
res.send('Create a user');
});
router.get('/:id', (req, res) => {
res.send(`Get user by id ${req.params.id}`);
});
router.put('/:id', (req, res) => {
res.send(`Update user by id ${req.params.id}`);
});
router.delete('/:id', (req, res) => {
res.send(`Delete user by id ${req.params.id}`);
});
module.exports = router;
然后,我们可以使用该路由中间件来处理用户请求:
// app.js
const express = require('express');
const userRoutes = require('./userRoutes');
const app = express();
app.use('/users', userRoutes);
app.listen(3000, () => console.log('Example app listening on port 3000!'));