首页 > 编程语言 >Node.js学习第四天-cnblog

Node.js学习第四天-cnblog

时间:2023-02-03 22:55:06浏览次数:47  
标签:Node const res app req 中间件 js next cnblog

Node.js学习第四天

1. 基本使用

  • 安装
npm i [email protected]
  • 创建最基本的web服务器
const express=require('express')

const app=express()

app.listen(80,()=>{
    console.log('express server running at http:127.0.0.1')
})
  • 监听请求
app.get(url,function(req,res){
    
})

app.post(url,function(req,res){
    
})
  • 响应内容
app.get('/user',(req,res)=>{
    
    // 响应JSON数据
    res.send({name:'zs'})
})

app.post('/user',(req,res)=>{
    // 响应文本内容
    res.send('请求成功')
})
  • 获取req的查询参数
app.get('/',(req,res)=>{
    
    // ?name=zs&age=18
    console.log(req.query.name) // zs
})
  • 获取路径参数
app.get('/user/:id',(req,res)=>{
    console.log(req.params)
})
  • 托管某个文件夹下的静态资源
app.use(express.static('public'))
app.use(express.static('files'))
  • 托管静态资源加上请求前缀
app.use('/public',express.static('public'))

// http:localhost:3000/public/images/kitten.jpg

2. nodemon

  • 热部署服务器工具
npm i nodemon

3. express 路由

  • router.js
const express=require('express')
const router=express.Router()


router.get('/user/list',(req,res)=>{
    
})


module.exports=router
  • 注册路由(index.js)
const userRouter=require('./router.js')

app.use(userRouter)
  • 添加路由前缀
app.use('/api',userRouter)

4. Express 中间件

const mw=function(req,res,next){
    
    console.log('这是一个最简单的中间件函数')
    // 交给下一个中间件或者路由,必须的
    next()
}

// 全局中间件

app.use(mw)

  • 定义多个全局中间件
app.use(function(req,res,next){
    
    console.log('第一个中间件')
    next()
})

app.use(function(req,res,next){
    
    console.log('第2个中间件')
    next()
})

app.use(function(req,res,next){
    
    console.log('第3个中间件')
    next()
})

app.get('/user',(req,res)=>{
    // 依次经过上面的中间件才到达这里
    res.send('home page')
})
  • 局部中间件
const mv1=function(req,res,next){
    
    console.log('这是中间件函数')
    
    next()
}

// 当前路由生效
app.get('/',mv1,function(){
    
})

// 不影响该路由

app.get('/user',function(req,res){
    
    ...
})

  • 定义多个局部中间件
app.get('/',mv1,mv2,(req,res)=>{
    
})

app.get('/',[mv1,mv2],(req,res)=>{
    
})

5. 中间件分类

5.1 应用级别的中间件

  • 绑定在app实例上的中间件
app.use((req,res,next){
        next()
})
        
app.get('/',mv1,function(req,res){
    
})        

5.2 路由级别中间件

const app=express()
const router=express.Router()

// 路由级别中间件
router.use(function(req,res,next){
    next()
})

app.use('/user',router)

5.3 错误级别的中间件

  • 错误级别中间件必须注册在所有的路由之后
  • 四个参数(err,req,res,next)
app.get('/',function(req,res){
    throw new Error('xxx')
    
    res.send('home page')
})

app.use(function(err,req,res,next){
    console.log('发生了错误'+err.message)
    
})

5.4 Express内置中间件

5.5 第三方中间件

6. 跨域资源共享

QQ截图20230121151616

更多请看nodejs第四天资料

6. 数据库

  • 项目中操作mysql
npm i mysql
  • db.js
const mysql=require('mysql')

const db=mysql.createPool({
  host:'127.0.0.1',
  user:'root',
  password:'root',
  database:'my_db_01'
})

module.exports=db
  • 查询sql
const db=require('../db/index')

db.query('select * from users',(err,results)=>{
    
    if(err){
        return console.log(err.message)
    }
    
    console.log(results)
})
  • 新增sql
// 数据对象
const user={username:'zs',age:12}

// 定义sql
const sqlStr='insert into users(username,age) values (?,?)'

// 数组形式填充占位符
db.query(sqlStr,[user.username,user.age],(err,results)=>{
    
    if(err){
        return console.log(err.message)
    }
    
    if(results.affectedRows===1){
        console.log('插入数据成功')
    }
})

7. 身份认证

7 更多请看ppt

标签:Node,const,res,app,req,中间件,js,next,cnblog
From: https://www.cnblogs.com/lingxin1123/p/17089644.html

相关文章

  • 在Spring Boot中整合Katharsis,来快速开发JSON API的Web应用
    1简介我们进行WebAPI开发的时候,经常会使用Json格式的消息体,而Json格式非常灵活,不同的人会有不同的设计风格和实现,而JSONAPI提供了一套标准。但它并不提供直接实现。Ka......
  • JS基础知识
    1.流程控制       2.顺序流程控制if语句   3.分支流程控制  3.1分支结构        3.2if语句   3.2.1语法结构  ......
  • vuejs从入门到精通——Visual Studio Code 使用 vite 安装项目
    VisualStudioCode 使用vite安装项目Vite是一个轻量级的、速度极快的构建工具,对VueSFC提供第一优先级支持。作者是尤雨溪,同时也是Vue的作者。要使用vite来创......
  • 【MySQL】MySQL 8 的 JSON 新特性详解(1)JSON 数据类型
    一、概述你好,我是小雨青年,一名使用MySQL8的程序员。MySQL8引入了对JSON数据类型的全面支持,并提供了一组内置函数以有效处理JSON数据。MySQL8中的JSON支持的一......
  • 原生 js 中 XMLHttpRequest
    完整文档使用XMLHttpRequest对象的open()方法来初始化一个请求,open()方法的语法格式如下:XMLHttpRequest.open(method,url,async,user,password);参数说明如下......
  • js中数组对象排序
    //数组对象按照指定属性排序--冒泡写法constduplicateRemovalBubbling=function(oldArr,key){for(leti=0;i<oldArr.length;i++){for(letj=0;j<oldArr.length......
  • python-json的自定义编码器与自定义解码器
    json的数据类型有限,在实际业务中可能会遇到数据无法使用JSON编码的问题。如果我们需要转发的数据有大量或位置不规则的json无法解析数据类型时,事先处理就变成了一件比较麻......
  • JS数组的常用方法-常用篇
     1.join数组变成字符串   不改变原数组1letarr1=['I','Love','You']2console.log(arr1.join(),arr1);//I,Love,You,['I','Love','You']3......
  • js中toFixed 并不是你想的那样进行四舍五入
    toFixed的简单介绍toFixed()方法可把Number类型的数字通过四舍五入为指定小数位的字符串。(将数字类型转化为字符串类型)也就是说toFixed只能够处理数字类型的.字符......
  • js:定时器setInterval、clearInterval的使用
    定时器:可以在固定时间间隔,重复调用一个函数文档https://developer.mozilla.org/zh-CN/docs/Web/API/setInterval常用的语法//设置定时器varintervalID=setInterv......