Node.js中Express的运用

前言

Express 是基于Node.js平台的一个快速的Web开发框架。
在这里插入图片描述

NPM官网中我们可以看周下载量达到了一千多万,说着这个后台框架是深受开发者的喜爱的。

下载 Express

npm install express --save

npm 下载掉包的时候可以尝试淘宝cnpm下载,使用淘宝cnpm时无法写入配置,所以建议无论是npm还是cnpm在下载包的时候都要加上--save保存配置项。

创建服务

const express = require('express')
const app = express()

app.get('/', function(req, res) {
    res.send('Hello World')
})

app.listen(3000)

通过引入express后可以直接就可以创建服务,端口号为3000,浏览器访问localhost:3000即可访问到服务器返回的数据"Hello World"

web层

const express = require('express')
const app = express()

app.use(express.static("./pages"));

app.listen(3000)

之前我们使用http的时候我们每一个页面都需要写一个请求,这样的做法造成代码臃肿杂乱,而在expressweb层服务层分离,这为我们节约了大量的代码。

服务层

GET和POST请求
app.get('/GET', function(req, res) {
    res.send('这是一个GET请求')
})
app.post("/POST",(req,res) => {
	res.send("这是一个POST请求")
})

express中封装了get请求和post请求的方法,直接调用即可。

路由设置
app.get('/test1', function(req, res) {
    res.send('这是第一个GET请求')
})
app.get('/test2', function(req, res) {
    res.send('这是第二个GET请求')
})

路由是根据请求的地址决定他要做什么,当我们在浏览器输入localhost:3000/test1时会返回"这是第一个GET请求",当输入localhost:3000/test2时会返回"这是第二个GET请求",这就是路由。

路由参数
app.get(/^\/student\/([\d]{10})$/, (req, res) => {
    res.send(`学生信息,学号${req.params[0]}`)
})

路由可以是一个正则表达式,只要满足这个正则条件就会进入这个路由。
使用圆括号匹配的参数被记录在req.params中。

路由变量
app.get("/student/:xh", (req, res) => {
    res.send(`学生信息,学号${req.params.xh}`)
})

通过:变量名我们也可以获取路由的变量,同样也被记录在req.params中。

中间件
app.get("/:username/:id", (req, res) => {
    res.send(req.params.username)
})

app.get("/admin/login", (req, res) => {
    res.send("管理员登录")
})

上面这种情况我们发现当我们请求内容为"/admin/login“时他会进入”/:username/:id"的路由,我们如果想要解决这个问题有两种方案。

1、交换位置

app.get("/admin/login", (req, res) => {
    res.send("管理员登录")
})

app.get("/:username/:id", (req, res) => {
    res.send(req.params.username)
})

2、使用中间件

app.get("/:username/:id", (req, res, next) => {
    next()
})

app.get("/admin/login", (req, res) => {
    res.send("管理员登录")
})

node.jsECMAScript 的分支,所以他的语法也是从上至下依次执行,我们可以通过交换位置实现,当然我们还可以通过通过中间件来解决这一个问题,但是使用了中间件以后就不能去使用响应结束了,中间件就相当于一个水阀,允许水继续的往下流动。

使用请求
app.use("/", (req, res, next) => {
    console.log(req.url);
    console.log(new Date());
    // 读文件,写文件 放到一个文件中,日志文件
    next()
})

use函数就是可以使用任意的一个请求,通过与中间件使用,可以实现日志文件的功能。

请求参数

GET参数

app.get('/login', (req, res) => {
    console.log(req.query)
    res.end('ok')
})

expressGET请求帮我们记录了请求了参数在query对象中。

POST参数

const bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: false }))
app.post("/login", (req, res) => {
    console.log(req.body)
    res.send("OK")
})

npm install body-parser

body-parser的作用是对post请求的请求体进行解析,结果保存在请求的body对象中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值