Express概述 1.什么是express Express是一个基于NodeJS实现的WEB应用开发框架 本质上是一个NodeJS第三方模块,使用的时候可以通过npm命令安装操作 npm install express -S
2.入门程序 创建第一个应用:demo01.js
const express = require('express')
const app = express()
app.get('/', (req, res) => {
res.send('hello express')
})
app.listen(3000, err => {
console.log('服务器已在3000启动');
})
http1.1规范中,根据用户处理数据的不同,将请求方式规范了8中请求方式
GET: 用于向服务器获取数据的请求 查 POST:用于向服务器提交新的数据的请求 增 PUT: 用于向服务器提交新的更新的请求 改 DELETE: 用于先服务器提交删除数据的请求 删 向用户/客户端发送数据 res.send(字符串数据或者对象数据)
3.问题处理
第三方模块安装缓慢问题 默认情况下,npm install 命令安装第三方模块,从http://npmjs.org网站上进行下载和安装,网站服务器部署在国外,访问网速受到限制 建议:使用淘宝部署的NPM镜像服务器进行下载 临时下载 npm install express -S --registry https://registry.npm.taobao.org 全局下载 npm config set register http://registry.npm.taobao.org npm config list 使用淘宝命令替换npm命令 npm install 命令默认从https://register.npmjs.org下载依赖 下载cnpm npm install cnpm -g 使用cnpm替换npm命令 cnpm install express -S
git忽略清单
git仓库中,添加一个隐藏文本文件.gitignore 该文本文件中,添加忽略的文件、文件夹 以后再执行git命令时,这些被忽略的文件、文件夹就不会再被管理 /node_modules/
2.express核心操作
1.response响应对象 服务器返回个客户端的数据,一般使用response表示,Express框架中,默认给response响应对象提供了一些基础函数
response.send() 作用:服务器给客户端返回基础数据,如字符串数据、JSON对象数据 应用场景:前后端分离的项目中,用于返回具体数据,一般用于数据接口函数中
response.sendFile() 作用:服务器给客户端返回文件数据,如HTML网页文档、图片文件、css样式文件 应用场景:前后端耦合项目中可以返回网页、前后端分离项目中可以返回图片数据
response.setHead() 作用:服务器给客户端返回响应对象时,设置响应头 应用场景:响应头中有特殊数据的话可以传递
const express = require('express')
const path = require('path')
const app = express()
app.get('/str',(req,res)=>{
let uname = 'zhansgan'
res.send(uname)
})
app.get('/json',(req,res)=>{
let obj = {name:'zhangsan',age:18}
res.send(obj)
})
app.get('/html',(req,res)=>{
let htmlPath = path.join(__dirname,'index.html')
res.sendFile(htmlPath)
})
app.get('/image',(req,res)=>{
let imgPath = path.join(__dirname,'1.jpg')
res.sendFile(imgPath)
})
app.listen(3000,err=>{
console.log('服务器已在3000端口启用');
})
2.Route路由访问
路由:本质上就是一个映射对象,将用户的请求分发到对应的组件进行处理的过程 路由的作用:核心作用就是将用户发送的不同路径的请求,交给不同的业务函数进行业务处理,最终完成具体的业务受理,给用户响应正确的数据 Express中的app.method(path路径,fn)就是一种封装的路由 method:get/post/put/delete/options/connect/trace/head
const express = require('express')
const app = express()
app.get('/index',(req,res)=>{
res.send('主页数据')
})
app.get('/login',(req,res)=>{
res.send('登录页面')
})
app.get('/register',(req,res)=>{
res.sendFile('注册页面')
})
app.listen(3000,err=>{
console.log('服务器已在3000端口启用');
})
3.middleware中间件
中间件:工作在客户端喝服务程序中间的一个组件 中间件可以拦截请求,针对请求进行数据处理,扩展请求的功能 请求中设置参数 请求中参数类型进行数据验证 请求中设置请求头 验证请求权限 中间件可以拦截响应,针对响应进行数据处理,扩展响应的功能 设置响应数据格式 转换项目数据类型 提取响应数据,按条件进行筛选 设置响应头数据
express中的中间件,主要区分为 内置中间件,express已经提供的、封装好的中间件 第三方中间件,第三方企业/团队开发的、封装的中间件 自定义中间件,按照需求定义的中间件
静态文件的处理 原生NodeJS应用中如果要处理静态文件(css/js/images)需要单独设置请求头,并且根据文件类型的不同,需要针对文件进行不同的读取操作 express中这针对静态文件的处理进行了优化, 提供了内置中间件可以支持某些特定的功能,如静态文件根据路径直接提取,如静态文件处理中间件express.static app.use(express.static(‘public’))
自定义中间件 开发人员在项目中通过固定语法添加的中间件,可以用于请求和响应的拦截 app.use((req,res,next)=>{ //req拦截到的请求对象 //res:拦截到的响应对象 //next() 请求继续向后传递 })
错误中间件
app.use((req,res,next)=>{
res.status(404)
return res.send('404notfond')
})
4.request请求对象
请求:即用户发送的一个url地址,用于向服务器请求数据 请求的格式在HTTP1.1规范中,定义了8种不同方式的请求 GET:向服务器请求获取数据 POST:向服务器请求新增数据 PUT:向服务器请求更新数据 DELETE:向服务器请求删除数据 HEAD:获取响应头数据,判断响应数据格式、大小等信息 TRACE:一般用于服务器存货状态的心跳检测
Express种的请求对象 Express中的路由组件中,业务处理函数的参数中包含请求对象 app.method(path,function(request请求对象,response响应对象){}) 请求对象常见属性 url:用户请求地址的路径 method:用户请求方式 params:用户请求路径中附带的参数 query:用户请求URL地址中附带的查询字符串参数 body:需要第三方中间件支持,获取post参数
参数:GET参数的发送和接收 用户发送请求URL: http://localhost:3000/get?name=zhangsan&age=20
app.get('/get',(req,res)=>{
let params = req.query
res.send(params.name+params.age)
})
参数:REST参数的发送和接收 为了保障服务器的数据安全出现的一种新的数据参数传递方式 用户发送URL请求: http://localhost:3000/r/12/article
app.get('/rest/:id/article',(req,res)=>{
let params = require.params
res.send(params.id)
})
参数:post参数的请求和接收 项目中存在一个问题,用户通过GET请求或者REST请求发送的参数,参数数据会展示在URL地址中,如果传递的数据有保密性要求,不适合使用GET/REST参数进行传递 Express在4.x版本开始,将post参数接收数据的部分拆分出去作为第三方中间件 npm install body-parser 项目中添加/注册中间件
app.use(bodyParser.urlencoded({extended:false}))
app.use(bodyParser.json())
post路由中接收POST请求参数
let params = req.body
|