服务器软件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

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

k8s搭建nfs共享存储实践

《k8s搭建nfs共享存储实践》本文介绍NFS服务端搭建与客户端配置,涵盖安装工具、目录设置及服务启动,随后讲解K8S中NFS动态存储部署,包括创建命名空间、ServiceAccount、RBAC权限... 目录1. NFS搭建1.1 部署NFS服务端1.1.1 下载nfs-utils和rpcbind1.1

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat