一、路由器
用来管理路由,将一个模块下所有的路由放到一起,最后被WEB服务器使用。用法如下:
//路由器下: const express = require('express'); //引入express const r = express.Router( ); //创建路由器 r.get('/list',(req,res)=>{ //添加路由 res.send('这是用户列表'); }); module.exports = r; //导出路由器对象 //WEB服务器下: const express = require('express'); //引入express const userRouter = require('./user.js'); //引入用户路由器 console.log(userRouter); const app = express( ); //创建web服务器 app.listen(8080,()=>{ //设置端口 console.log('服务器创建成功!'); }); app.use('/user',userRouter); //使用路由器,把路由器下所有的路由挂载到WEB服务器下,'/user'是为路由添加的前缀
二、中间件
处于请求和响应之间,可以拦截请求,也可以做出响应。所有中间件在使用前均先创建服务器。
1. 应用级中间件
就是一个函数,一旦拦截到会执行这个函数
格式:app.use(要拦截的URL,函数)
app.use('/shopping',(req,res,next)=>{ //添加中间件 //获取get传递的数据 console.log(req.query); req.query.price *= 0.9; next( ); //往后执行 }); app.get('/shopping',(req,res)=>{ //添加到购物车 console.log(req.query); res.send(`商品的价格:${req.query.price}`); });
2. 路由级中间件
路由器的使用
app.use(要拦截的URL,路由器)
3. 内置中间件
用于托管静态资源,如果客户端托管静态资源(html、css、js、图像......),不需要通过路由器响应,而是自动的到指定的目录下寻找。
格式:app.use(express.static(托管的目录的路径));
app.use(express.static('./public'));
4. 第三方中间件
属于第三方模块,使用前需要先下载安装。
5. 错误处理中间件
//格式:在路由中 app.get('/list',(req,res,next)=>{ next(错误信息) //把错误交给错误处理中间件 }); eg: //添加错误处理中间件,拦截所有路由中产生的错误 app.use((err,req,res,next)=>{ //err 所接收到的路由传递过来的错误信息 console.log(err); res.status(500).send({code:500,msg:'服务器端错误!'}); //响应错误 });
三、MySQL模块
1. 使用步骤
(1)引入MySQL模块
const mysql = require('mysql');
(2)创建一个连接对象
const c = mysql.createConnection({ host:'127.0.0.1', port:'3306', user:'root', password:'', database:'tedu' });
(3)执行SQL命令
c.query('select * from emp where ename=?',[str],(err,result)=>{ if(err) throw err; console.log(result); });
2. 连接池
创建的一批连接,可以被反复使用,用完后会归还。
(1)引入MySQL模块
const mysql = require('mysql');
(2)createPool( ) 创建连接池对象
const pool = mysql.createPool({ host:'127.0.0.1', port:'3306', user:'root', password:'', database:'tedu', connectionLimit:15 //连接池数量 });
(3)query( ) 执行SQL命令
pool.query('select * from emp',(err,result)=>{ if (err) throw err; console.log(result); });
四、RESTful接口
接口是后端为前端提供的动态资源(对数据的增删改查),而RESTful则是一种接口设计规范。
1. URL
http://127.0.0.1:8080/v1/emps //多个资源
http://127.0.0.1:8080/v1/emps/3 //单个资源(v1版本号、emps 资源名称(复数形式)、3编号)
http://127.0.0.1:8080/v1/users/login //对资源的特殊操作例如登录
2. 请求方法
对资源的操作方式,包括 get(获取资源)、post(新建资源)、delete(删除资源)、put(修改资源)。
3. 过滤数据
eg:
http://127.0.0.1:8080/v1/products?price1=4000&price2=5000 //过滤一组价格区间的数据
http://127.0.0.1:8080/v1/products?pno=1&count=9 //通过分页过滤
4. 返回结果
格式为 JSON 对象:字符串形式的对象,属性名必须是双引号,属性值是字符串且必须用双引号,包含状态码(人为规定)、消息、数据。格式如下:
{ "code":200, "msg":"登录成功" } { "code":200,"msg":"登录成功","data":[ ] }
推荐接口工具: ApiPost