ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

day35Express及相关内容

2022-07-15 22:06:09  阅读:170  来源: 互联网

标签:express res app req day35Express next 内容 相关 data


 

昨天内容回顾

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.主文件

 

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

标签:express,res,app,req,day35Express,next,内容,相关,data
来源: https://www.cnblogs.com/he-maoke/p/16482869.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有