Node.js学习十三(express框架)

文章目录


一、Express介绍

1、Express是什么

      Express是基于Node.js平台,快速、开放、极简的Web开发框架。

      ExpressExpress的作用和Node.js内置的http模块类似,它可以帮助开发人员快速创建Web服务器。

      ExpressExpress是目前流行的基于Node.js运行环境的Web应用程序开发框架,它简洁且灵活,为Web应用程序提供了强大的功能。Express提供了一个轻量级模块,类似于jQuery(封装的工具库),它把Node.js的HTTP模块的功能封装在一个简单易用的接口中,用于扩展HTTP模块的功能,能够轻松地处理服务器的路由、响应、Cookie和HTTP请求的状态。

优势:

(1)简洁的路由定义方式。
(2)简化HTTP请求参数的处理。
(3)提供中间件机制控制HTTP请求。
(4)拥有大量第三方中间件。
(5)支持多种模版引擎。

      本质:是npm上的第三方包,提供了快速创建Web服务器的便捷方法。
https://www.expressjs.com.cn/
      这是express中文官网,可以在上面学习关于express的知识。

2、为什么要使用Express

      当我们想创建服务器时,由于Node.js提供的http内置模块使用起来很复杂,开发效率低,所以基于http模块,封装出了Express,极大的提高了开发效率。

3、express的作用

      使用Express,可以方便、快速的创建Web网站的服务器或API接口的服务器。
Web网站服务器:专门对外提供Web网页资源的服务器。
API接口服务器:专门对外提供API接口的服务器。

二、Express的基本使用

1、安装

      创建目录,并在该目录下新建目录,如server作为项目的根目录。
      server目录下执行如下命令。

npm init(项目初始化,生成package.json文件)
npm install express(安装express)

      安装完成后,在当前目录下打开命令行工具执行“npm list express”命令,可以查看Express版本。

2、创建基本的Web服务器

//1、导入express模块
const express = require('express');
//2、创建web服务器
const app = express();
//3、监听端口80,启动web服务器
app.listen(80,()=>{
   
    console.log('express server running at http://127.0.0.1');
});

3、监听GET请求

      通过app.get()方法,可以监听客户端的GET请求,具体的语法格式如下:

//监听GET请求
//参数1:客户端请求的URL地址、
//参数2:请求对应的处理函数
//      req:请求对象(包含了与请求相关的属性和方法)
//      res:响应对象(包含了与响应相关的属性和方法)
app.get('请求URL',function(req,res){
   
    //处理函数
})

4、监听POST请求

      通过app.post()方法,可以监听客户端的POST请求,具体语法格式如下:

//参数1:客户端请求的URL地址
//参数2:请求对应的处理函数
//       req:请求对象(包含了与请求相关的属性和方法)
//       res:响应对象(包含了与响应相关的属性和方法)
app.post('请求URL',function(req,res){
   
    //处理函数
})

5、把内容响应给客户端

      下表中响应对象(res)上的方法可以向客户端发送响应,并终止请求-响应循环。如果没有从路由处理程序调用这些方法,客户端请求将保持挂起状态。

方法 说明
res.download() 提示要下载的文件。
res.end() 结束响应过程。
res.json() 发送一个JSON响应。
res.jsonp() 发送JSON响应与JSONP支持。
res.redirect() 重定向请求。
res.render() 渲染视图模板。
res.send() 发送各种类型的响应。
res.sendFile() 以八位元流的形式发送文件。
res.sendStatus() 设置响应状态码,并将其字符串表示作为响应体发送。

      如通过res.send()方法,可以把处理好的内容,发送给客户端:

app.get('/user',(req,res)=>{
   
    //向客户端发送JSON对象
    res.send({
   
        name:'haha',
        age:90,
        gender:'男'
    })
})
app.post('/user',(req,res)=>{
   
    //向客户端发送文本内容
    res.send('请求成功')
})

6、举例

//1、导入express
const express = require('express');
//2、创建web服务器
const app = express();
//3、监听GET和POST请求,并向客户端响应具体的内容
app.get('/user',(req,res)=>{
   
    //向客户端发送JSON对象
    res.send({
   
        name:'haha',
        age:90,
        gender:'男'
    })
})
app.post('/user',(req,res)=>{
   
    //向客户端发送文本内容
    res.send('请求成功')
})
//4、启动web服务器
app.listen(80,()=>{
   
    console.log('express server running at http://127.0.0.1');
});

      首先我们启动服务器
在这里插入图片描述
      然后我们可以打开postman测试一下,我们的请求是否生效,首先测试GET请求,输入网址后点击send,就会出现以下结果,则响应成功。
在这里插入图片描述
      然后测试POST请求,同样输入网址,选择POST,再点击send,出现以下结果,响应成功。
在这里插入图片描述

7、获取URL中携带的查询参数

      通过req.query对象,用于获取GET请求参数,即可以访问到客户端通过查询字符串的形式,发送到服务器的参数,会将GET参数转换为对象并返回。

app.get('/',(req,res)=>{
   
    //req.query默认是一个空对象
    //客户端使用 ?name=ahah&age=20 这种查询字符串形式,发送到服务器的参数,
    //可以通过 req.query 对象访问到,例如:
    //req.query.name   req.query.age
    console.log(req.query);
})

      举例如下:

//1、导入express
const express = require('express');
//2、创建web服务器
const app = express();
//3、监听GET和POST请求,并向客户端响应具体的内容
app.get('/user',(req,res)=>{
   
    //向客户端发送JSON对象
    res.send({
   
        name:'haha',
        age:90,
        gender:'男'
    })
})
app.post('/user',(req,res)=>{
   
    //向客户端发送文本内容
    res.send('请求成功')
})
app.get('/',(req,res)=>{
   
    //通过req.query可以获取到客户端发送过来的查询参数
    //req.query默认是一个空对象
    console.log(req.query);
    res.send(req.query);
})
//4、启动web服务器
app.listen(80,()=>{
   
    console.log('express server running at http://127.0.0.1');
});

      启动服务器后我们可以发现,终端里打印的为空对象,用postman测试时响应的也是空对象,这是因为req.query默认情况下为空对象。
在这里插入图片描述
在这里插入图片描述
      接下来,我们重新测试,在postman输入的网址里输入查询字符串 ?name=haha&age=90,结果如下:
在这里插入图片描述
在这里插入图片描述
      查询字符串成功显示。

8、获取URL中的动态参数

      通过req.params对象,可以访问到URL中,通过匹配到的动态参数,即获取路由传递的数据:
      URL地址中,可以通过 :参数名 的形式,匹配动态参数值,此时传递的各种数据,id都会接受。

app.get('/user/:id',(req,res)=>{
   
//req.params默认是一个空对象
//里面存放着通过 : 动态匹配到的参数值
console.log(req.params)
})

      举例如下:

//1、导入express
const express = require('express');
//2、创建web服务器
const app = express();
//注意:这里的 :id 是一个动态的参数
app.get('/user/:id/:age',(req,res)=>{
   
    //req.params默认是一个空对象
    //里面存放着通过 : 动态匹配到的URL参数值
    console.log(req.params)
    res.send(req.params)
})
//3、启动web服务器
app.listen(80,()=>{
   
    console.log('express server running at http://127.0.0.1');
});

我们可以通过postman测试一下:
在这里插入图片描述
在这里插入图片描述

9、获取post请求数据

(1)通过事件获取数据

req.on('data',function(mydata){
   })

      首先我们先写一个post.html文件,里面使用form表单,使它可以传递数据给服务器端。
method:设置请求方法,如post;
action:设置请求url
name:用于接收表单输入的数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>post</title>
</head>
<body>
    <form action="/mylogin" method="post">
        <label>
            用户:
            <input type="text" name="uname">
        </label>
        <br/>
        <label>
            密码:
            <input type="password" name="upwd">
        </label>
        <br/>
        <input type="submit">
    </form>
</body>
</html>

      其次创建一个服务器,根据提交按钮的请求,创建相应的路由。

const express = require('express');
const querystring = require('querystring')
const app = express();
app.get('/login',(req,res)=>{
   
    //响应文件
    res.sendFile(__dirname+'/post.html'
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值