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

2024-03-24 00:20

本文主要是介绍服务器软件express搭建web服务器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1.express 是什么
  • 2.路由
      • 2.1(参数一)读取用户的请求(request)
      • 2.2(参数二)给用户响应(response)
      • 2.3(参数三)next()函数(传递请求到下一个处理函数)
  • 3. use中间件
      • use中间件与路由的区别
        • 路由(区别演示)
        • use中间件(区别演示)

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("服务器已经启动~")
})

我们通过
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与路由的区别

这篇关于服务器软件express搭建web服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/839982

相关文章

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域

Windows Server服务器上配置FileZilla后,FTP连接不上?

《WindowsServer服务器上配置FileZilla后,FTP连接不上?》WindowsServer服务器上配置FileZilla后,FTP连接错误和操作超时的问题,应该如何解决?首先,通过... 目录在Windohttp://www.chinasem.cnws防火墙开启的情况下,遇到的错误如下:无法与

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总