he-maoke

导航

day35Express及相关内容

 

昨天内容回顾

1.mysql数据库讲解(DDL DML)

2.mysql模块讲解(采用连接的方式)

3.mysql模块的CRUD

4.mysql连接池的使用

5.mysql的执行方法封装(完成登录注册功能)

实现对应的商品表的操作

1.需求文档的分析(mock数据)

2.看相同的一些产品(讨论)

3.创建的数据库

//根据id查询的功能
if(router=="/good" && req.method == "GET"){
//获取get传参
let data = parse(req.url).query
// 将对应的data变成一个对象
data = decode(data)
//查询所有的功能
let sql = "select * from t_goods"
if(data.id){
sql = "select * from t_goods where id=?"
}
let obj = new ResponseObj()
// 根据id查询
execute(sql,
data.id)
.
then((result)=>{
obj.data = data.id?result[0]:result
res.write(JSON.stringify(obj))
res.end()
})
}

分页接口书写

//分页查询商品的接口
if(router=="/good/page" && req.method == "GET"){
//获取get传参
let data = parse(req.url).query
// 将对应的data变成一个对象
data = decode(data)
//对应的应该从前端传的参 页码 条数
let total = data.limit?Number(data.limit):5
let currentPage = data.page?Number(data.page):1
//查询所有的功能
let sql = "select * from t_goods limit ?,?"
let obj = new ResponseObj()
// 根据id查询
execute(sql,
[(currentPage-1)*total,total])
.
then((result)=>{
obj.data = result
res.write(JSON.stringify(obj))
res.end()
})
}

第三方模块express

概述:express模块专门用于写web接口的一个模块(框架),他集成了http及相关的内容.使用更加方便

基础入门

1.下载安装

npm i express -S

2.导入

const express = require('express')

3.应用 createApplication(express导出就一个createApplication方法)

const app = express()
//他具备对应的方法 resultful风格的接口 具备对应的请求的方法 get post delete put patch
app.get("",(req,res,next)=>{
res.end('hello')
})
app.listen(8080,"localhost",function(){
console.log('当前服务启动')
})

express方法

 

 

express.json json文件引入的
express.Router 路由对象
express.static 静态文件访问
express.urlencoded 用于解析请求体的(body-parse里面的)

application的方法
get 请求
post 请求
delete 请求
put 请求
patch 请求
all 请求(所有都满足)
use 中间件使用(组合模式)
request 请求对象
请求获取参数 (属性)
get获取
使用query(?)
post请求 使用body (请求体)
路由传参 通过url地址传参 params(/)
response 响应对象(方法)
send() 发送数据
json() 发送json数据
redirect 重定向
render 渲染方法(ssr 服务器渲染)
router路由对象
use 中间件使用

简单登录案例

const express = require('express')
//创建一个应用对象
const app = express()
//解析请求体的中间件
app.use(express.urlencoded({extended:true}))
//登录接口
app.post('/login',function(req,res,next){
//获取请求的参数
let username = req.body.username
let password = req.body.password
//进行比对
if(username=="jack" && password=='123'){
// 响应数据回去
res.json({
code:200,
message:
"
登录成功",
data:{
username,
password
}
})
}else{
res.json({
code:200,
message:
"
用户名或密码错误",
data:{}
})
}
})
//查询(根据id查询)
app.get('/user',function(req,res,next){
//获取id
let id = req.query.id
if(id==1){
res.json({
code:200,
message:
"
成功",
data:{
username:
"
jack",
password:"123"
}
})
}else{
res.json({
code:200,
message:
"
成功",
data:{
}
})
}
})
app.listen(8888,function(){
console.log('服务器已经启动');
})

中间件使用

登录拦截

//token 后端发给前端的 前端会把他存起来 在请求对应的内容的时候带上对应的token
// const token = "asdadandjwn1j2"
//中间件拦截 token(令牌)
// app.use("/shopList",function(req,res,next){
// //从前端的请求中读取对应的token(请求头/cookie来存储)
// if(!req.cookies){
//
res.send("当前没有登录")
// }else if(req.cookies.token==token){//登录了
//
next()//可以进入下面
// }else{
//
res.send("当前没有登录")
// }
// })
//登录状态记录 (模拟)
const isLogin = false
app.use("/shopList",function(req,res,next){
if(isLogin){
next()
}else{
res.send("当前未登录")
}
})
//商品列表
app.get("/shopList",(req,res,next)=>{
res.send("商品列表页面")
})
app.get("/shopList/item",(req,res,next)=>{
res.send("商品列表")
})

错误拦截操作

//错误处理
app.get("/error",(req,res,next)=>{
throw new Error("访问出错")
res.send("错误页面")
})
app.use(function(err,req,res,next){
if(err){
res.send("服务器正在维护"+err.message)
}else{
next()
}
})

路由

1.路由配置

const express = require("express")
//路由对象
const router = express.Router()
//导入对应的处理方法
const {handlerUser,handlerUserHello,handlerUserList} = require("../handler")
//对应user的路由
router.get("/",handlerUser)
router.get("/list",handlerUserList)
router.get("/hello",handlerUserHello)
//导出去给其他地方使用
module.exports = router

2.处理函数

const handlerUser = function(req,res,next){
res.send("我是用户的主页")
}
const handlerUserHello = function(req,res,next){
res.send("我是用户hello")
}
const handlerUserList = function(req,res,next){
res.send("我是用户列表")
}
//导出
module.exports = {
handlerUser,
handlerUserHello,
handlerUserList
}

3.主文件

 

------------恢复内容结束------------

posted on 2022-07-15 21:44  hmkyj  阅读(12)  评论(0编辑  收藏  举报