前后端分离开发模式(考虑跨域问题
)
- 前端 会开启在一个自己的服务器上 4000
- div+css布局
- js,jquery,css3等实现页面交互
- 请求后端接口完成业务
- 后端 会开启自己的服务器上 5000
- 编写接口
- 编写数据库
- 项目上线
4000服务器在请求5000服务器的数据时就会出现跨域问题
一、引入数据库
1.安装mysql
npm imysql -S
2.创建mysql连接对象(routes中)
var mysql = require('mysql');
//2 创建mysql链接对象
var connection = mysql.createConnection({
//ip地址
host : 'localhost',
user : 'root',
password : '123456',
//数据库名
database : 'mydb_0518'
});
3.开启并关闭连接
//查
router.get('/getUser/:id',(req,res)=>{
const id = req.params.id
const msq='select * from users where isdel=0 and id=?'
connection.query(msq,id, function (err, results, fields) {
if (err) return console.log(err.message)
if(results.length === 0) return('查找的用户不存在')
res.send({err_code:0, message:results})
});
})
//增
router.post('/adduser',(req,res)=>{
const body=req.body
const msq='insert into users set ?'
connection.query(msq,body, function (err, results) {
if (err) return console.log(err.message)
if(results.affectedRows!=1) return res.send('添加失败')
res.send({err_code:0,message:'添加成功'})
});
})
二、restful接口规范
通过请求的方式了解到相应的接口操作
- 增 post
注:方法名
addUser——>users注:url
- 删 get——>delete
deleteUsers——>users - 改 post——>put
updateUsers——>users - 查 get
getusers——>users
即各自的url全改用users(数据库的表名),方法全不一样,方法内容还是按照各自写法。
三、跨域问题
比如后端开启在8888端口,前端开启在8081端口,前端ajax访问后端端口时就会出现跨域问题,有两种解决方案如下:
1.jsonp方法
jsonp只能发送get请求,返回方法,里面返回对象。还需要提供jsonp接口
2.跨域资源共享(cors)
- 后端安装cors模块:
cnpm i cors -S
- 引入
cors:const cors = require('cors')
- 使用cors模块(相当于中间件)
app.use(cors())