Web前端105天-day35-Node.js

node.jsday07

目录

前言

一、复习

二、RESTful接口

2.1返回结果

2.2请求方式

2.3接口地址(请求的URL)

2.4传参方式

三、练习

总结


前言

node.jsday07学习开始


一、复习

 

二、RESTful接口

  • 是一种接口的规范

2.1返回结果

  • JSON格式

2.2请求方式

  • get--用于获取资源,查询数据
  • post --用于新建资源,插入数据
  • delete--用于删除资源,删除数据
  • put--用于修改资源,修改数据

2.3接口地址(请求的URL)

  • 带着资源名称(前缀), 带着版本号
  • /v1/emps/update
  • /v1/emps/add
  • /v1/news/list

2.4传参方式

  • 查找/删除--get传参 / params传参
  • 修改/插入--post传参

三、练习

  • 练习:编写修改员工的接口(put  /update),post传递员工的编号、姓名、性别、生日、工资,所属部门,获取传递的参数,执行SQL命令修改编号对应的员工,如果修改失败响应{code:400,msg:'修改失败'} ,否则响应{code:200,msg:'修改成功'}
  • 练习:编写员工列表的接口(get  /v1/emps/list),get传递当前的页码和每页的数据量,执行SQL命令,查询数据这一页员工的数据,最后响应{code:200,msg:'查询成功', data: 查询的数据}
// 引入express模块
const express = require('express')
// 引入mysql模块
const mysql = require('mysql')
// 创建WEB服务器
const app = express()
// 设置端口
app.listen(3000,()=>{
	console.log('服务器启动成功')
})
// 托管静态资源
app.use( express.static('public') )
// 创建连接池对象
const pool = mysql.createPool({
	host: '127.0.0.1',
	port: '3306',
	user: 'root',
	password: '',
	database: 'tedu',
	connectionLimit: '15',
	multipleStatements: true  //开启执行多个SQL命令
})
// 添加路由(get /search)
// 1.查找员工接口
app.get('/search',(req,res)=>{
	// 获取get传递的参数
	var obj = req.query
	console.log(obj)
	// 执行SQL命令,查询该员工
	pool.query('select * from emp where ename=?',[obj.ename],(err,r)=>{
		if(err) {
			throw err
		}
		console.log(r)
		// 如果查询结果是空数组说明员工不存在,否则就是存在
		// 空数组长度为0
		if(r.length===0){
			// send方法会自动将JS对象转为JSON
			res.send({code: 400,msg:'该员工不存在'})
		}else{
			res.send({code: 200,msg: '查找成功',data: r})
		}
	})
})
// 将post传参转为对象
app.use( express.urlencoded({
	extended: true
}) )
// 2.添加员工接口(post /add)
// 接口地址(请求的URL):http://127.0.0.1:3000/add
// 请求方式(请求方法):post
app.post('/add', (req,res)=>{
	// 获取post传递的参数
	var obj = req.body
	console.log(obj)
	// 执行SQL命令,将数据插入到数据库
	pool.query('insert into emp set ?',[obj],(err,r)=>{
		if(err) {
			throw err
		}
		console.log(r)
		// 直接响应成功
		res.send({code:200,msg:'员工添加成功'})
	})
})

// 3.删除员工接口(路由 get /delete ) 
// 接口地址:http://127.0.0.1:3000/delete
// 请求方式:delete
app.delete('/delete',(req,res)=>{
	// 获取get传递的参数
	var obj = req.query
	console.log(obj)
	// 执行SQL命令,删除编号对应的员工
	pool.query('delete from emp where eid=?',[obj.eid],(err,r)=>{
		if(err) {
			throw err
		}
		console.log(r)
		// r 成功结果为对象,如果对象下的affectedRows属性为0说明删除失败,否则删除成功
		if(r.affectedRows===0){
			res.send({code:400,msg:'删除失败'})
		}else{
			res.send({code:200,msg:'删除成功'})
		}
	})
})

// 4.修改员工接口(put /update)
//接口地址:/update
//请求方式:put
app.put('/update',(req,res)=>{
	// 获取post传递的参数
	var obj = req.body
	console.log(obj)
	// 执行SQL命令
	pool.query('update emp set ? where eid=?',[obj,obj.eid],(err,r)=>{
		if(err) {
			throw err
		}
		console.log(r)
		// r 成功的结果是对象,如果对象下的属性changedRows值为0说明修改失败,否则说明修改成功
		if(r.changedRows===0){
			res.send({code:400,msg:'修改失败'})
		}else{
			res.send({code:200,msg:'修改成功'})
		}
	})
})

// 5.员工列表接口(get /v1/emps/list)
// 请求方式:get 
// 接口地址:/v1/emps/list
app.get('/v1/emps/list',(req,res)=>{
	// 获取get传递的参数 
	var obj = req.query
	// 如果页码为空,默认为第1页
	if(!obj.pno){
		obj.pno = 1
	}
	// 如果每页的数据量为空,默认为5条
	if(!obj.count){
		obj.count = 5
	}
	console.log(obj)
	// 计算出开始查询的值
	var start = (obj.pno-1)*obj.count
	// 将每页数据量转为数值                    
	var size = parseInt(obj.count)
	// 执行SQL命令,查询出这一页对应的数据
	pool.query('select * from emp limit ?,?;select count(*) n from emp',[start,size],(err,r)=>{
		if(err) {
			throw err
		}
		console.log(r)
		// 响应到客户端
		res.send({
			code: 200,
			msg: '查询成功',
			data: r[0],
			total: r[1][0].n,   //总数据量
			pages: Math.ceil( r[1][0].n/obj.count ),      //总页数= 向上取整(总数据量/每页数据量)
			pno: obj.pno   //当前页码
		})
	})
})// 引入express模块
const express = require('express')
// 引入mysql模块
const mysql = require('mysql')
// 创建WEB服务器
const app = express()
// 设置端口
app.listen(3000,()=>{
	console.log('服务器启动成功')
})
// 托管静态资源
app.use( express.static('public') )
// 创建连接池对象
const pool = mysql.createPool({
	host: '127.0.0.1',
	port: '3306',
	user: 'root',
	password: '',
	database: 'tedu',
	connectionLimit: '15',
	multipleStatements: true  //开启执行多个SQL命令
})
// 添加路由(get /search)
// 1.查找员工接口
app.get('/search',(req,res)=>{
	// 获取get传递的参数
	var obj = req.query
	console.log(obj)
	// 执行SQL命令,查询该员工
	pool.query('select * from emp where ename=?',[obj.ename],(err,r)=>{
		if(err) {
			throw err
		}
		console.log(r)
		// 如果查询结果是空数组说明员工不存在,否则就是存在
		// 空数组长度为0
		if(r.length===0){
			// send方法会自动将JS对象转为JSON
			res.send({code: 400,msg:'该员工不存在'})
		}else{
			res.send({code: 200,msg: '查找成功',data: r})
		}
	})
})
// 将post传参转为对象
app.use( express.urlencoded({
	extended: true
}) )
// 2.添加员工接口(post /add)
// 接口地址(请求的URL):http://127.0.0.1:3000/add
// 请求方式(请求方法):post
app.post('/add', (req,res)=>{
	// 获取post传递的参数
	var obj = req.body
	console.log(obj)
	// 执行SQL命令,将数据插入到数据库
	pool.query('insert into emp set ?',[obj],(err,r)=>{
		if(err) {
			throw err
		}
		console.log(r)
		// 直接响应成功
		res.send({code:200,msg:'员工添加成功'})
	})
})

// 3.删除员工接口(路由 get /delete ) 
// 接口地址:http://127.0.0.1:3000/delete
// 请求方式:delete
app.delete('/delete',(req,res)=>{
	// 获取get传递的参数
	var obj = req.query
	console.log(obj)
	// 执行SQL命令,删除编号对应的员工
	pool.query('delete from emp where eid=?',[obj.eid],(err,r)=>{
		if(err) {
			throw err
		}
		console.log(r)
		// r 成功结果为对象,如果对象下的affectedRows属性为0说明删除失败,否则删除成功
		if(r.affectedRows===0){
			res.send({code:400,msg:'删除失败'})
		}else{
			res.send({code:200,msg:'删除成功'})
		}
	})
})

// 4.修改员工接口(put /update)
//接口地址:/update
//请求方式:put
app.put('/update',(req,res)=>{
	// 获取post传递的参数
	var obj = req.body
	console.log(obj)
	// 执行SQL命令
	pool.query('update emp set ? where eid=?',[obj,obj.eid],(err,r)=>{
		if(err) {
			throw err
		}
		console.log(r)
		// r 成功的结果是对象,如果对象下的属性changedRows值为0说明修改失败,否则说明修改成功
		if(r.changedRows===0){
			res.send({code:400,msg:'修改失败'})
		}else{
			res.send({code:200,msg:'修改成功'})
		}
	})
})

// 5.员工列表接口(get /v1/emps/list)
// 请求方式:get 
// 接口地址:/v1/emps/list
app.get('/v1/emps/list',(req,res)=>{
	// 获取get传递的参数 
	var obj = req.query
	// 如果页码为空,默认为第1页
	if(!obj.pno){
		obj.pno = 1
	}
	// 如果每页的数据量为空,默认为5条
	if(!obj.count){
		obj.count = 5
	}
	console.log(obj)
	// 计算出开始查询的值
	var start = (obj.pno-1)*obj.count
	// 将每页数据量转为数值                    
	var size = parseInt(obj.count)
	// 执行SQL命令,查询出这一页对应的数据
	pool.query('select * from emp limit ?,?;select count(*) n from emp',[start,size],(err,r)=>{
		if(err) {
			throw err
		}
		console.log(r)
		// 响应到客户端
		res.send({
			code: 200,
			msg: '查询成功',
			data: r[0],
			total: r[1][0].n,   //总数据量
			pages: Math.ceil( r[1][0].n/obj.count ),      //总页数= 向上取整(总数据量/每页数据量)
			pno: obj.pno   //当前页码
		})
	})
})


总结

node.jsday07学习结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值