Express框架的教程一之Express的简单使用

Express

Express 是最流行的 Node 框架,是许多其它流行 Node 框架 的底层库。它提供了以下的功能:

  • 根据不同的url不同请求方式返回不同的响应。
  • 允许在请求管道的任何位置添加额外的中间件
  • 集成了“视图”渲染引擎,以便通过将数据插入模板来生成响应。
  • 设置常见 web 应用设置,比如用于连接的端口,以及渲染响应模板的位置。

Express简单使用教程

导入npm包

npm install express@4.17.1

简单的入门demo

使用express搭建服务器,测试get方法,向前端返回对象

//req 包含请求对象  res 包含响应对象
const express = require('express')
const app = express()
app.get('/user',(req,res)=>{
    //发送json对象
    res.send({name:"lin",age:20})
})

在这里插入图片描述

前置知识学习

进行测试之前,我们先来了解一下express响应函数的res,req两个参数,前面说req 包含请求对象 res 包含响应对象,用大白话来说,我们使用express传递数据时候,我们通过req获取前端传递的值,向后端传递的是res对象。
req包含两种属性,一种是req.body,一种是req.query。

req使用解析
req.body

req.body 属性包含在请求正文中提交的数据的键值对。默认情况下,它是未定义的,默认支持多种请求格式,使用前需要使用 body-parsing 的中间件进行解析,例如 express.urlencoded() 或 express.json()。
在这里插入图片描述

req.query

req.query 是一个请求对象,由 URL 中的请求查询字符串填充。这些查询字符串采用键值形式
在这里插入图片描述

req.params

req.params属性是一个包含映射到命名路由可实现动态携带参数的属性的对象。如请求的url地址为"/mo/:id",那么req.params指向的就是

res使用解析
res.send

res.send用于向前端发送对象,使用较多

res.json

基本的使用场景与res.send相同。不同之处在于,当传递对象或数组时,这两个方法是相同的,但是res.json()也会转换非对象,如null和undefined,这些无效的JSON。

res.end

用于收集前端数据,但并不提供数据,而是直接结束响应的下

res.download

实现前端向后端下载文件

res.redirect

实现页面重定向

get请求
//req 包含请求对象  res 包含响应对象
const express = require('express')
const app = express()
app.get('/user',(req,res)=>{
    //发送json对象
    res.send({name:"lin",age:20})
})
不支持多次响应数据

express只支持向前端返回一次数据,多次响应会出错:Cannot set headers after they are sent to the client

在这里插入图片描述

测试

测试get方法
app.get('/user',(req,res)=>{
    res.send({name:"lin",age:20})
})

在这里插入图片描述

测试post方法

这里测试带参数的方法

app.post('/user',(req,res)=>{
    console.log(req.query);
    console.log(req.body)

    res.send("请求成功")
})

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试页面重定向
//页面重定向
app.get('/redirect',(req,res)=>{
    console.log("接收请求")
    res.redirect('localhost:8080/user')


})

在这里插入图片描述

测试文件下载
app.get('/download',(req,res)=>{
    console.log("接收请求")
    console.log(req.query)
    const paths = path.join(__dirname,"../",'/package.json')

    res.download(paths,function (err){
        if(err){
            console.log(err)
        }else{
            console.log("下载完毕")
        }
    })
})

在这里插入图片描述

//动态携带参数
app.get('/mo/:id',(req,res)=>{
    console.log("接收请求")
    //req的parms是动态匹配的url的参数cd
    console.log(req.params)
    res.send(req.query)
})

在这里插入图片描述
在这里插入图片描述

完整的源码

const express = require('express')

const app = express()
const path = require('path')
app.use(express.urlencoded({extended:false}))
app.get('/user',(req,res)=>{
    console.log(req.query);
    console.log(req.body);

    res.send({name:"lin",age:20})
})
//
app.post('/user',(req,res)=>{
    console.log(req.query);
    console.log(req.body)

    res.send("请求成功")
})

//req 包含请求对象
//res 包含响应对象
app.get('/data',(req,res)=>{
    console.log("接收请求")
    console.log(req.query)

    res.send(req.query)
})
//页面重定向
app.get('/redirect',(req,res)=>{
    console.log("接收请求")
    res.redirect('localhost:8080/user')


})
app.get('/download',(req,res)=>{
    console.log("接收请求")
    console.log(req.query)
    const paths = path.join(__dirname,"../",'/package.json')

    res.download(paths,function (err){
        if(err){
            console.log(err)
        }else{
            console.log("下载完毕")
        }
    })
})
//动态携带参数
app.get('/mo/:id',(req,res)=>{
    console.log("接收请求")
    //req的parms是动态匹配的url的参数cd
    console.log(req.params)
    res.send(req.query)
})
app.listen(8080,()=>{
}
)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值