(1)Express编写GET、POST请求:
const express = require('express')
const router = express.Router()
//定义Get请求
router.get('/get', (req, res) => {
//通过req.query获取客户端通过查询字符串,发送到服务器的数据
const query = req.query
res.send({
status: 0,
msg: '操作成功!',
data: query
})
})
// 定义post请求
router.post('/post', (req, res) => {
// 通过req.body获取请求体中包含url-encode格式的数据
const body = req.body
res.send({
status: 0,
msg: '操作成功!',
data: body
})
})
module.exports = router
(二)CORS跨域资源共享
接口的跨域问题
以上的接口不支持跨域请求
(1)解决接口跨域问题的方案主要有2种:
1、CORS(主流的解决方案,推荐使用)
2、JSONP(有缺陷的解决方案,只支持GET请求)
(2)使用cors中间件解决跨域问题
cors是Express的一个第三方中间件,通过安装和配置cors中间件,可以很方便地解决跨域问题
Express中使用cors解决跨域问题的步骤:
(1)npm install cors 安装
(2)const cors=require('cors')
(3)在路由之前配置中间件:app.use(cors())
什么是CORS:
CORS: 跨域资源共享,由一系列HTTP响应头组成,这些HTTP响应头决定浏览器是否阻止前端js代码跨域获取资源
浏览器的同源安全策略默认会阻止网页“跨域”获取资源,但是如果接口配置了CORS相关的HTTP响应头就可以解除浏览器端的跨域访问限制。
Cors主要是在服务器端配置,客户端无需配置
CORS响应头:
Access-Control-Allow-Origin /...-Headers/...-Methods
具体实现步骤:
引申:
app.use的用法
(1)加载路由
// 导入路由模块
const router = require('./12_express_get')
// 注册路由模块
app.use('/api', router) //请求路径前都会带有/api
(2)加载静态资源
app.use("/public", express.static(path.join(__dirname, "./public")));
(3)定义中间件【即拦截器】
在所有请求之前(也就是所有路由之前去拦截)
app.use((req,resp,next)=>{
//所有经过路由的请求就会先到达这里被拦下来,如果想放行,直接调用next()
});