目录
一、express
1、初识express
2、安装express
3、创建并启动web服务器
4、监听 GET&POST 请求、响应内容给客户端
5、获取URL中携带的查询参数
6、获取URL中动态参数
7、静态资源托管
二、工具nodemon
三、express路由
1、express中路由
2、路由的匹配
3、路由模块化
4、路由模块添加前缀
四、中间件
1、express中间件
2、express中间件调用流程
3、中间件格式
4、创建并使用中间件函数
全局生效中间件
局部生效中间件
5、中间件作用
6、中间件分类
express.json & POST请求数据的接收
7、自定义中间件
五、Express 编写接口
1、编写get 、post 方式接口
2、cors 解决跨域
3、关于 cors
cors 响应头
Access-Control-Allow-Origin
Access-Control-Allow-Headers
Access-Control-Allow-Methods
cors请求分类
4、JSONP
Node.js学习记录(一)-CSDN博客
接着上一篇继续学习node.js
一、express
1、初识express
express类似node.js中http模块,专门用来创建WEB服务器的,相对node中http更加方便、功能更加强大;本质是npm上提供的第三方包。官网地址:Express - 基于 Node.js 平台的 web 应用开发框架 - Express中文文档 | Express中文网
express是基于node.js封装出来的,使用express可以快速创建这两种服务器。
2、安装express
npm i express@4.17.1 //安装指定版本
npm i express //不指定版本直接安装
3、创建并启动web服务器
先新建个express练习目录 express, 里面新建express_test.js
(顺便 npm init -y 初始化一个package.json 文件,后面会用 )
//导入express
const express = require('express')
//创建服务器
const app = express()
//启动服务器
app.listen(3000,()=>{console.log('服务器启动了')
})
4、监听 GET&POST 请求、响应内容给客户端
//导入express
const express = require('express')
//创建服务器
const app = express()//监听请求,并向客户端响应数据 (指定user页面)
app.get('/user',(req,res)=>{res.send('hello express')
})
app.post('/user',(req,res)=>{res.send({name:'张三',age:18})
})//启动服务器
app.listen(3000,()=>{console.log('服务器启动了 http://127.0.0.1:3000')
})
请求中的两个参数:req 请求对象、res 响应对象
用 app.get 监听get请求,app.post 监听post请求
通过res.send() 向客户响应数据
运行结果
5、获取URL中携带的查询参数
可以通过req.query对象查询 如链接:http://127.0.0.1:3000/user?id=1&name=test&str=%E5%AD%97%E7%AC%A6
//监听请求,并向客户端响应数据
app.get('/user',(req,res)=>{res.send('hello express')console.log('请求的参数:',req.query)
})
app.post('/user',(req,res)=>{res.send({name:'张三',age:18})console.log('请求的参数:',req.query)
})
6、获取URL中动态参数
通过req.params对象访问URL中通过 :匹配到的动态参数
默认req.params是一个空对象, 示例链接:http://127.0.0.1:3000/user/9?id=1&name=test&str=%E5%AD%97%E7%AC%A6
//导入express
const express = require('express')
//创建服务器
const app = express()//监听请求,并向客户端响应数据
//app.get('/user/:id/:name',(req,res)=>{
app.get('/user/:id',(req,res)=>{res.send('hello express')console.log('请求的动态参数参数:',req.params)
})//启动服务器
app.listen(3000,()=>{console.log('服务器启动了 http://127.0.0.1:3000')
})
:<key> ,这个key起什么名字,打印里面就会得到什么,比如 :name ,打印就会得到{name:9},
:<key1>/:<key1>参数可以有多个,如 http://127.0.0.1:3000/user/9/test?id=1&name=test&str=%E5%AD%97%E7%AC%A6
7、静态资源托管
express 提供了express.static(),可以方便地创建一个静态资源服务器,如:可以通过代码将图片、css、js等文件对外开放访问
app.use(express.static('public'))
express在指定静态目录下查找文件,并提供对外访问路径,但存放静态文件的目录名不会出现在url中。
如下面示例中托管images和other文件夹后,访问里面的文件
images文件夹中图片:http://localhost:3000/1.png
other文件夹中css文件:http://localhost:3000/reset.css
(查找顺序是按照代码中写的顺序进行查找文件)
const express = require('express')
const app = express()
//托管images文件夹
app.use(express.static('./images'))
//如果托管多个就继续添加,如:托管other目录
app.use(express.static('./other'))app.listen(3000, () => {console.log('Server is running here: http://localhost:3000')
})
挂载路径前缀
如果想要再访问的路径前有个前缀,则可以通过代码设置,访问地址