nodejs、EXPRESS框架

nodejs库,不用基础做起,工作简单化,点击进入官网,类似的还有 koa

特点

二次封装,非侵入式,增强形

二次封装:保留了原来的功能,做了进一步的增加。

安装

1、全局安装

npm install express -g
npm install express-generator -g(mac系统中一般没有问题,windows系统下建议安装)
express -h 测试是否安装成功

2、搭建项目,局部安装

1)、新建项目目录
2)、初始化项目:npm init -y
3)、本地安装express:npm i express --save

3、搭建服务器

let express=require(‘express’)
let app=express(); //相当于调用 http.createServer()
app.listen(端口,地址,回调)

4、静态资源托管
app.use(express.static(’./www’));

5、 动态资源(接口实现)

不同请求方式对应的函数

支持各种请求方式:get、post、put、delete…

app.请求方式API(接口名称,处理函数)
app.get(url,(req,res,next)=>{
    
})
app.post(url,(req,res,next)=>{})
...
req 请求体

req 对象表示 HTTP 请求,把前端发送请求的一切信息封装到了该对象里。包含了请求查询字符串,参数,内容,HTTP 头部等属性。

req.query //获取地址栏的数据
req.body //获取非地址栏的数据  依赖中间件(body-parser) 

req.params //获取动态接口名   如: /api/goods/:id 的请求,那么,用req.params.id 获取
req.method //获取前端提交方式

req.body依赖中间件

中间件使用:body-parser

  1. npm install body-parser
  2. let bodyParser = require(‘body-parser’)
  3. app.use(bodyParser ())
res 响应体

response 对象表示 HTTP 响应,即在接收到请求时向客户端发送的 HTTP 响应数据

res.send(any)  //send可以返回任何类型,包括对象 //对等 res.write + end
res.end(string|buffer) //原来的方法还在,这就是非侵入式的意思。
res.json(json) //只返回json

res.status(404).send({error:1,msg:"Sorry can't find that!"}) //返回一个404,并响应内容,这是链式写法

res.sendFile(path.resolve('public/error.html')) //发送文件,如:mp3,mp4等等,html也可以。

res.redirect(url)   后端跳转  指向一个接口
处理 多个接口的 公共业务

如:token的处理(前端发来token字符串,后端先验证token是否正确,如果正确,才进行接口的处理)

kapp.all('/admin/*',(req,res,next)=>{}))  表示任何以admin开始的请求(任何类型)都会经过回调函数

all 处理所有类型的 HTTP 请求(如:get,post,put,delete等等)

需要next 延续后续

use函数

安装中间件、路由。接受一个函数, 中间件其实就是个函数

app.use([地址],中间件|路由|函数体)
app.use('/api/*',(req,res,next)=>{ })  //等价于 app.all('/api/ *  ,(req,res,next)=>{});
app.use('/',(req,res,next)=>{ })  //等价于  app.use((req,res,next)=>{ })  )

即:如果不写地址,那么表示 ‘/’ ,即针对任何请求,都会执行该中间件

app.use,app.all,app.get|app.post的关系

app.use :处理中间件(关注点:在完成功能上,如body-parser)

​ app.all:处理请求

​ app.get :处理某种类型请求

​ app.post

​ app.put

​ ………………

中间件

middleware, 处理自定义业务,只处理从 请求 到 结束响应 的中间部分

举例

npm i body-parser -S //安装包

let bodyParser=require('body-parser')//引入中间件

app.use(bodyParser())//安装中间件(插入中间件)

body-parser 使用方式,实时查询 npm,可获得最新

扩展req、res

#### req

- req.app:当callback为外部文件时,用req.app访问express的实例
- req.baseUrl:获取路由当前安装的URL路径
- req.cookies:Cookies
- req.fresh / req.stale:判断请求是否还「新鲜」
- req.hostname / req.ip:获取主机名和IP地址
- req.originalUrl:获取原始请求URL
- req.path:获取请求路径
- req.protocol:获取协议类型
- req.route:获取当前匹配的路由
- req.subdomains:获取子域名
- req.accepts():检查可接受的请求的文档类型
- req.acceptsCharsets / req.acceptsEncodings / req.acceptsLanguages:返回指定字符集的第一个可接受字符编码
- req.get():获取指定的HTTP请求头
- req.is():判断请求头Content-Type的MIME类型

#### res

- res.app:同req.app一样
- res.append():追加指定HTTP头
- res.set()在res.append()后将重置之前设置的头
- res.cookie(name,value [,option]):设置Cookie
- opition: domain / expires / httpOnly / maxAge / path / secure / signed
- res.clearCookie():清除Cookie
- res.download():传送指定路径的文件
- res.get():返回指定的HTTP头
- res.location():只设置响应的Location HTTP头,不设置状态码或者close response
- res.render(view,[locals],callback):渲染一个view,同时向callback传递渲染后的字符串,如果在渲染过程中有错误发生next(err)将会被自动调用。callback将会被传入一个可能发生的错误以及渲染后的页面,这样就不会自动输出了。
- res.sendFile(path [,options] [,fn]):传送指定路径的文件 -会自动根据文件extension设定Content-Type
- res.set():设置HTTP头,传入object可以一次设置多个头
- res.status():设置HTTP状态码
- res.type():设置Content-Type的MIME类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值