创建API路由模块
//08.apiRouter.js
const express = require('express')
const router = express.Router()
module.exports = router
//09.使用express编写接口.js
const express = require('express')
const router = require('./08.apiRouter')
const app = express()
app.use('/api',router)
app.listen(80,()=>{
console.log('express server running at http://127.0.0.1:80')
})
编写GET接口
const express = require('express')
const router = express.Router()
router.get('/get',(req,res)=>{
//req.query 获取客户端通过查询字符串,发送到服务器的数据
const query = req.query
res.send({
status:0,
msg:'GET请求成功',
data:query
})
})
module.exports = router
编写POST接口
router.post('/post',(req,res)=>{
const body = req.body
res.send({
status:0,
msg:'POST 请求成功',
data:body
})
})
https://staticfile.org/这个网站可以找到很多在线版本的工具,例如jquery、react、vue
接口的跨域问题
刚才编写的GET和POST请求,存在一个很严重的问题:不支持跨域请求
解决接口跨域问题的方案主要有两种:
- CORS(主流的解决方案,推荐使用)
- JSONP(有缺陷的解决方案,只支持GET请求)
cors是Express的一个第三方中间件,通过安装和配置cors中间件,就可以很好的解决跨域问题;
运行npm install cors 安装中间件
使用const cors = require('cors') 导入中间件
在路由之前调用app.use(cors()) 配置中间件
JSONP的概念:浏览器端通过script标签的src属性,请求服务器上的数据,同时,服务器返回一个函数的调用,这种请求方式叫做JSONP。
如果项目中已经配置了CORS跨域资源共享,为了防止冲突,必须在配置CORS中间件之前声明JSONP接口。
//在CORS之前声明JSONP
//没有在路由上注册jsonp,所以手动添加api目录
app.get('/api/jsonp',(req,res)=>{
//获取客户端发送过的回调函数的名字
const funcName = req.query.callback
//得到要通过JSONP形式发送给客户端的数据
const data = {name:'zs',age:22}
const scriptStr = `${funcName}(${JSON.stringify(data)})`
res.send(scriptStr)
})
版权声明:本文为huangxunlove原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。