nodejs(3)

框架:是一整套解决方案,提供了项目开发中的常用功能,简化了已有的功能。

Node.js中常见的框架:express koa egg

1.express框架

基于Node.js平台,快速、开放、极简的WEB开发框架
网址:www.expressjs.com.cn
属于第三方模块,需要先去下载安装
npm  install   express

(1)创建WEB服务器

const express=require('express'); //引入express第三方模块
const app=express();//创建WEB服务器
app.listen(8080); //设置端口

(2)路由

路由根据请求的方法和请求的URL作出特定的响应,是一个独立的方法
路由三要素:请求的方法、请求的URL、回调函数
res 响应的对象
res.send()  设置响应的内容并发送
res.redirect()   设置跳转的URL并发送
res.sendFile()  设置响应的文件并发送,文件必须使用绝对路径(__dirname)
req 请求的对象
req.url   获取请求的URL
req.method  获取请求的方法
req.query   获取get传递的数据(查询字符串),结果为对象

2.路由中获取数据

传递方式	格式	路由中获取,结果为对象
get传递	http://127.0.0.1:8080/mysearch?kw=笔记本	req.query
{kw: '笔记本'}
post传递	URL中不可见(在http协议的请求主体)	req.on('data', (chunk)=>{
chunk获取的数据,转字符串后位查询字符串,需要解析为对象
querystring.parse( chunk.toString() )
})
{user: 'tao', password: '123456'}

路由传参 http://127.0.0.1:8080/package/mysql 需要设置形参

app.get('/package/:pname',(req,res)=>{
req.params  //获取路由传参的数据,格式为对象
})	
{pname: 'mysql'}
观察数据的传递方式和之前的区别
对比get和post的区别
get请求会被浏览器缓存,post不会被缓存,post安全度相对高
get请求传递的数据最大不超过8k,post请求传递的数据大小没有限制
get请求速度相对post比较快,在对数据安全要求不高的情况下会使用get,例如搜索

1.路由器

用来管理路由,将同一个功能模块下的所有的路由统一管理,最终路由器被WEB服务器使用

在这里插入图片描述
0------------------------------------------------------------------------------------------------------------------------------0

路由器

const express=require('express'); //引入express
const r=express.Router();//创建路由器对象
//添加路由
module.exports=r; //导出路由器对象

WEB服务器引入并使用路由器

const userRouter=require('./user.js');
app.use('/user',userRouter);

2.中间件

用于拦截对服务器的请求
分为应用级中间件、路由级中间件、内置中间件、第三方中间件、错误处理中间件

(1)应用级中间件

就是一个函数,一旦拦截到以后会自动调用这个函数
app.use( 要拦截的URL, 函数 )

(2)路由级中间件

就是路由器的使用

(3)内置中间件

托管静态资源中间件
如果浏览器端请求静态资源(html,css,js,图像...),不需要通过路由去响应,而是自动的到某个目录下寻找。
app.use( express.static('要托管的目录') )

(4)第三方中间件

都是以第三方模块的形式存在,需要先下载安装
body-parser中间件
下载安装   npm   install  body-parser
//1.引入body-parser
//2.使用body-parser将所有post请求的数据解析为对象
app.use( express.urlencoded({
extended:false  //是否使用第三方的qs模块解析为对象
}) );
//3.在路由中获取post请求的数据
req.body

其它第三方中间件:https://www.expressjs.com.cn/resources/middleware.html
文件上传中间件:http://www.codece.com/archives/173

3.mysql模块

是Node.js下专门用于操作mysql数据库的模块
下载安装
	npm  install   mysql
连接数据库
mysql.exe  -h127.0.0.1  -P3306  -uroot   -p
mysql  -uroot
mysql  -uroot<拖拽SQL脚本文件
------------------------------sql配置文件-----------------------------------------------------
const c =mysql.createConnection({
host:'127.0.0.1',
port:'3306',
user:'root',
password:'',
database:'tedu',
connectionLimit:20
});
module.exports=c;//需要暴露模块才能调用

1.mysql模块

createPool( )   创建连接池
query(SQL命令, 数组, 回调函数 )   执行SQL命令,数组保存用来过滤的数据,最后再去替换占位符,通过回调函数获取结果

SQL注入

select * from emp where 1;
select * from emp where ename="tao" or "1";
占位符(?):先将用户提供的值进行过滤,过滤完再替换位置。
select* from emp where sex=?  and  salary>?  ,  [0, 8000]
2.后端接口
接口:后端提供的动态资源(注册、登录、数据操作...)
RESTful接口:是一种接口风格

(1)URL

员工资源
http://127.0.0.1:8080/v1/emps     多个资源
                	版本号  资源名称(复数形式)
http://127.0.0.1:8080/v1/emps/3     单个资源
                           编号
用户资源
http://127.0.0.1:8080/v1/users/login      对资源的操作方式  
http://127.0.0.1:8080/v1/users/reg

(2)请求的方法

对资源的操作方式
get     获取资源
post    新建资源
delete  删除资源
put     修改资源

(3)过滤数据

针对于多个资源的操作
http://127.0.0.1:8080/v1/emps?pno=1&count=10
通过分页过滤数据              当前页码  每页的数据量
http://127.0.0.1:8080/v1/emps?salary1=6000&salary2=8000
过滤一组工资区间

(4)返回结果

格式为json,字符串形式的对象,属性名必须用双引号的形式,属性值如果是字符串必须用双引号
包含状态码、消息、数据
例如:用户登录的返回结果
{"code": 200, "msg": "登录成功"}
例如:获取用户的列表
{"code":200, "msg":"获取成功", "data": [....]}
Node.js下,每一个路由就是一个接口

3.ApiPost

专门用于调试后端接口的工具,可以生成接口说明文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值