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

相关文章

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

Windows Server 2025 搭建NPS-Radius服务器的步骤

《WindowsServer2025搭建NPS-Radius服务器的步骤》本文主要介绍了通过微软的NPS角色实现一个Radius服务器,身份验证和证书使用微软ADCS、ADDS,具有一定的参考价... 目录简介示意图什么是 802.1X?核心作用802.1X的组成角色工作流程简述802.1X常见应用802.

SpringBoot项目Web拦截器使用的多种方式

《SpringBoot项目Web拦截器使用的多种方式》在SpringBoot应用中,Web拦截器(Interceptor)是一种用于在请求处理的不同阶段执行自定义逻辑的机制,下面给大家介绍Sprin... 目录一、实现 HandlerInterceptor 接口1、创建HandlerInterceptor实

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.