服务器软件express搭建web服务器

本文介绍了如何使用Express在Node.js中创建Web服务器,重点讲解了路由的使用、如何读取请求和响应用户,以及中间件的作用和与路由的区别。通过实例展示了如何设置GET请求、使用next()函数以及区分路由和中间件的工作原理。
摘要由CSDN通过智能技术生成

1.express 是什么

  • express 是node中的服务器软件
    通过express可以快速的在node中搭建一个web服务器
    • 使用步骤:
      1. 创建并初始化项目
        yarn init -y
        此命令会生成一个package.jason的包,它是Node.js项目中的关键文件。它包含与项目相关的各种元数据,包括依赖项、脚本和配置详细信息。
      2. 安装express
        yarn add express
      3. 创建index.js 并编写代码

// 引入express
const express = require("express")
// 获取服务器的实例(对象)
const app = express()
// 启动服务器(// app.listen(端口号) 用来启动服务器,里面的回调函数会在服务器启动之后运行)
app.listen(3000, () => {
    console.log("服务器已经启动~")
})

我们通过服务器地址访问服务器
服务器地址构成:
协议名://ip地址:端口号/路径
此处因为是在本机建立的服务器,所以ip地址也是本机的ip地址
http://localhost:3000
或 http://127.0.0.1:3000
在这里插入图片描述

2.路由

如果希望服务器可以正常访问,则需要为服务器设置路由,路由可以根据不同的请求方式和请求地址来处理用户的请求
app.METHOD(…)
METHOD 可以是 get 或 post…
当有人向根目录发送get请求时,回调函数就会执行
路由的回调函数执行时,会接收到三个参数(req,res,next)
第一个 request

在路由中,应该做两件事

2.1(参数一)读取用户的请求(request)

req() 表示的是用户的请求信息,通过req可以获取用户传递数据

console.log(req.url)

2.2(参数二)给用户响应(response)

根据用户的请求返回响应(response)

  • res()表示的服务器发送给客户端的响应信息
    可以通过res来向客户端返回数据
    • sendStatus() 向客户端发送响应状态吗
    • status() 用来设置响应状态吗,但是并不发送
    • send() 设置并发送响应体
res.sendStatus(404)
res.status(200)
res.send("<h1>这是我的第一个服务器</h1>")
// 引入express
const express = require("express")
// 获取服务器的实例(对象)
const app = express()
// 启动服务器(// app.listen(端口号) 用来启动服务器,里面的回调函数会在服务器启动之后运行)
app.listen(3000, () => {
    console.log("服务器已经启动~")
})
app.get("/", (req, res) => {
    // 注意必须用双引号包裹路径
    console.log('有人来了123')
    // 向客户端发送响应状态码,这些都是服务器的回应,意思是回应一次就行
    // req就是读取用户的请求信息
    console.log(req.url)
    // res.sendStatus(404)
    res.status(404)
    res.send('你的请求没问题')

})

2.3(参数三)next()函数(传递请求到下一个处理函数)

浏览器每刷新一下就会发送一次请求,app.get()方法就会再执行一次。
next() 是回调函数的第三个参数,它是一个函数,调用函数后,可以触发后续的中间件/路由
next() 不能在响应处理完毕后调用

// 引入express
const express = require("express")
// 获取服务器的实例(对象)
const app = express()
// 启动服务器(// app.listen(端口号) 用来启动服务器,里面的回调函数会在服务器启动之后运行)

app.listen(3000, () => {
    console.log("服务器已经启动~")
})
app.get("/", (req, res, next) => {
    next()
    // next()要在响应处理之前使用
    res.send("1")

    // send里面必须为字符串
})
app.get("/", (req, res, next) => {
    next()
    // next()要在响应处理之前使用
    res.send("2")
    // send里面必须为字符串
})
app.get("/", (req, res, next) => {
    res.send("3")
    // send里面必须为字符串
})

根据以上代码,服务器返回的应该是1,但是实际上返回的是3。因为调用next()方法之后,本身的路由/use中间件就不会响应数据,自然下一个路由或者是中间件就可以执行了。如果前面两个路由都没有调用next方法,那么服务器给出的响应就是1了,响应1之后,后面的全部路由都不会执行了。
在这里插入图片描述

3. use中间件

app.listen(3000, () => {
    console.log("服务器已经启动~")
})
app.get("/", (req, res, next) => {
    next()
    // next()要在响应处理之前使用
    res.send("1")

    // send里面必须为字符串
})
app.get("/", (req, res, next) => {
    next()
    // next()要在响应处理之前使用
    res.send("2")
    // send里面必须为字符串
})
app.get("/", (req, res, next) => {
    next()
    res.send("3")
    // send里面必须为字符串
})
app.use((req, res, next) => {
    res.send("qwer")
})

服务器响应为qwer
在这里插入图片描述

use中间件与路由的区别

路径区别,路由的话写的什么路径,访问的时候就是什么路径,但是如果是中间件的话,在路径后面还可以任意加东西,都可以访问成功,但是如果是路由的话,随便加东西是访问不成功的。

路由(区别演示)
app.listen(3000, () => {
    console.log("服务器已经启动~")
})
app.get("/hello", (req, res, next) => {
    // next()
    res.send("3")
    // send里面必须为字符串
})

http://localhost:3000/hello可以访问
在这里插入图片描述

接下来改一下路径
http://localhost:3000/hello/poiu
发现不能访问到
在这里插入图片描述

use中间件(区别演示)

在这里插入图片描述
注意看地址栏,无论我在/hello后面加什么都可以访问到,这就是use与路由的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值