web服务器的搭建方法(nodejs,express)和中间件的使用

本文详细介绍了如何使用Node.js和Express框架搭建web服务器,从创建服务器到使用Express的app对象、response对象和request对象。还讲解了Express的路由、中间件的概念和使用,包括中间件的执行流程、中间件加前缀的方法,以及不同类型的中间件。此外,还提到了开发工具nodemon和Rest Client的使用,以及如何接收POST参数。
摘要由CSDN通过智能技术生成

目录

Nodejs创建web服务器(不常用)

创建服务器步骤

搭建过程中需要的

Express框架开发

基本信息

 express的安装和使用

初始化项目并安装express

初体验:express创建web服务器

express中的app对象

1.app.get( 路径,兼听函数 )

2.app.post(路径,兼听函数 )

3. app.all(路径,兼听函数 )

express的response对象

1. res.send( 字符串|对象 )。

2.res.sendFile( absolute filepath )

express的request对象

1)req.query

 2)req.params

 使用步骤

 开发工具的使用(nodemon热更新 ,Rest Client )

nodemon热更新工具

Rest Client

路由Router

什么是路由?

express中Router的作用?以及Router要解决的问题?

Express中的路由(Node的路由)

匹配流程

express.Router 模块化路由

总结(原生nodejs和express的req,res)

express的中间件

什么是中间件?

简介

中间件的好处

中间件执行流程

使用中间件

 中间节的基本使用

用法一:app.use()

用法二:router.use()

中间件加前缀

用法一:app.use(前缀,中间件函数):使用自定义中间件时

用法二:app.use(前缀,中间件函数):使用模块化路由时 【重点】

 用法三:router.use(前缀,中间件函数):使用自定义中间件时

中间件种类

应用级别的中间件

错误中间件

逻辑错误 :就是含有err,req,res,next四个形参的自定义中间件

内置中间件

开放静态资源:express.static(绝对路径)

接收post参数

1)、express.urlencoded()内置中间件用来接收以post方式的键值对格式发送的参数:

2)、express.json()内置中间件用来接收以post方式的json格式发送的参数:

第三方中间件

小图标

图片验证码


Nodejs创建web服务器(不常用)

为什么要创建web服务器?

只有我们把nodejs程序通过web服务器发布出去之后,别人才能通过互联网来访问我们的nodejs程序,否则也只是在本地运行我们的nodejs程序。

创建服务器步骤

//引入http模块
const http = require('http');
// console.log(http);

//创建web服务器:
const server = http.createServer();
// console.log(server);

//监听事件:server.on('事件名',回调方法);
//req对象:request请求对象
//res对象:response响应对象
server.on('request', function(req, res) {
  
    res.end('Yes OK');
    // res.end('Hello web'); //结束响应、res.end()必须且只能使用一次
});


//监听端口:
server.listen(3000, function() {
    console.log('3000端口');
});

搭建过程中需要的

设置响应头信息。res.writeHead(200,{'Content-Type':"text/html;charset=utf8"});

打印请求消息。method和url

//引入http模块
const http = require('http');
// console.log(http);

//创建web服务器:
const server = http.createServer();
// console.log(server);

//监听事件:server.on('事件名',回调方法);
//req对象:request请求对象
//res对象:response响应对象
server.on('request', function(req, res) {
    console.log(req.url);

    //res.setHeader()或res.writeHead():设置响应的头信息
    // res.setHeader('content-type', 'text/html;charset=utf-8');
    res.writeHead(200, 'ok', { 'content-type': 'text/html;charset=utf-8' });

    res.write('<h2>张三</h2>'); //返回响应的内容、res.write()可以多次使用
    res.write('<p><strong>年龄:20</strong></p>');

    res.end('Yes OK');
    // res.end('Hello web'); //结束响应、res.end()必须且只能使用一次
});


//监听端口:
server.listen(3000, function() {
    console.log('3000端口');
});

Express框架开发

基本信息

Express是基于基于 Nodejs平台,快速、开放、极简的 Web 开发框架(后端开发框架)。

中文地址:Express - 基于 Node.js 平台的 web 应用开发框架 - Express 中文文档 | Express 中文网icon-default.png?t=LA92https://www.expressjs.com.cn/

官网地址:Express - Node.js web application framework

作用:使用 Express,我们可以方便、快速的创建 Web 网站的服务器或 API 接口(纯json数据)的服务器。

本质上:express是一个第三方包存在于npm社区中。

 API(Application Programming Interface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。

 express的安装和使用

初始化项目并安装express

注意:在项目根目录下执行下面的命令:

npm  i   express

初体验:express创建web服务器

//引入express框架
const express = require('express');
// console.log(express);

//创建应用:
const app = express();
// console.log(app);

//监听端口:
app.listen(4040, () => {
    console.log('4040端口');
});

express中的app对象

1.app.get( 路径,兼听函数 )

注意:所有的路径必须以/开头

匹配以get方式发送过来的请求

以get方式发送请求的有:

1)、在浏览器地址栏中;

2)、a标签中的href属性;

3)、form标签中的method='get'或省略method属性; //只能以get方式的查询字符串格式发送参数

4)、javascript中使用location.href进行页面跳转;

2.app.post(路径,兼听函数 )

注意:所有的路径必须以/开头

匹配以post方式发送过来的请求

3. app.all(路径,兼听函数 )

匹配以任意方式发送过来的请求,app.all()方法通常放在最后面来处理404错误。

express的response对象

1. res.send( 字符串|对象 )。

返回响应,res.send()方法相当于原生nodejs中的res.setHeader()和res.end()这两个方法

2.res.sendFile( absolute filepath )

将某个文件的内容读取出来并作为响应返回给客户端。

express的request对象

1)req.query

req.query属性用来接收get方式的查询字符串格式发送的参数,get方式的查询字符串格式的参数如下:

 http://localhost:4040/teacher?参数名=参数值&参数名2=参数值2

 2)req.params

专业名称:动态路径(路由)

req.params属性用来接收get方式的path路径格式发送的参数,get方式的path路径格式的参数如下:http://localhost:4040/zhuce/参数值1/参数值2/参数值3

 使用步骤

第一步:使用app.get()设置路径时参数部分要使用:变量名来表示,如:

//详情页面
//app.get('/detail/:变量名1/:变量名2', (req, res) => {

 // 
 //   res.send(`详情页`);
//});

//详情页面
app.get('/detail/:uid/:email', (req, res) => {

    console.log(req.params);
    let { uid = '', email = '' } = req.params;

    res.send(`详情页${uid}  ${email}`);
});

 开发工具的使用(nodemon热更新 ,Rest Client )

nodemon热更新工具

如果以热更新方式运行某个应用程序,则热更新会检查当前应用程序文件的代码是否发生变化,若有变化则热更新工具会自动停止并重新运行当前应用程序,而不需要手动频繁停止、运行某个应用程序。

第一步:安装nodemon热更新工具:

在dos小黑窗的任意目录中执行下面的命令:

 npm  i   nodemon -g

关于-g参数的说明: 【重点】

1)、使用-g参数安装的第三方包默认存储在:C:\Users\当前用户\AppData\Roaming\npm;

2)、使用-g参数安装某个包时可以在dos小黑窗的任意目录来执行安装命令,而不一定要在项目的根目录中执行安装命令;

3)、同一台电脑只需要安装一次即可;

第二步:以热更新方式来运行某个应用程序:

 E:\web_beijing\day07\代码>nodemon 5-作业-zhuce.js

Rest Client

Rest Client是vscode的一个插件,该插件是用来模拟HTTP协议中的各种请求方式发送请求的,通常用来调试服务端的接口程序。

第一步:在vscode工具中安装Rest Client插件;

第二步:在任意目录中创建以.http结尾的文件,在这个以.http结尾文件中定义要调用的服务端程序(接口程序),格式如下:

@urls=http://localhost:5000

POST {
  {urls}}/mytest HTTP/1.1


###
GET {
  {urls}}/dozhuce?uid=321&usr=lisi&email=lisi@qq.com HTTP/1.1

###
GET {
  {urls}}/login/110/zhangsan HTTP/1.1

路由Router

什么是路由?

广义上来讲,路由就是映射关系。对于我们网络请求中的路由是:每一次请求对应每一个请求处理的函数。

路由就是根据请求中的不同path路径返回不同的响应,在express框架中设计路由的方式有两种:

第一种:使用app.get()、app.post()、app.all()方法来设计路由;

第二种:使用模块化方式来设计路由;

express中Router的作用?以及R

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值