Node.js(三)路由器、中间件、MySQL模块、RESTful接口

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
性能测试 PTS,5000VUM额度
简介: Node.js(三)路由器、中间件、MySQL模块、RESTful接口

一、路由器

       用来管理路由,将一个模块下所有的路由放到一起,最后被WEB服务器使用。用法如下:


//路由器下:
const express = require('express');  //引入express
const r = express.Router( );  //创建路由器
r.get('/list',(req,res)=>{  //添加路由
  res.send('这是用户列表');
});
module.exports = r;  //导出路由器对象
//WEB服务器下:
const express = require('express');  //引入express
const userRouter = require('./user.js');  //引入用户路由器
console.log(userRouter);
const app = express( );  //创建web服务器
app.listen(8080,()=>{  //设置端口
  console.log('服务器创建成功!');
});
app.use('/user',userRouter);  //使用路由器,把路由器下所有的路由挂载到WEB服务器下,'/user'是为路由添加的前缀

二、中间件

       处于请求和响应之间,可以拦截请求,也可以做出响应。所有中间件在使用前均先创建服务器。


1. 应用级中间件


       就是一个函数,一旦拦截到会执行这个函数

       格式:app.use(要拦截的URL,函数)


app.use('/shopping',(req,res,next)=>{  //添加中间件
  //获取get传递的数据
  console.log(req.query);
  req.query.price *= 0.9;
  next( );  //往后执行
});
app.get('/shopping',(req,res)=>{  //添加到购物车
  console.log(req.query);
  res.send(`商品的价格:${req.query.price}`);
});

2. 路由级中间件


       路由器的使用

       app.use(要拦截的URL,路由器)


3. 内置中间件


       用于托管静态资源,如果客户端托管静态资源(html、css、js、图像......),不需要通过路由器响应,而是自动的到指定的目录下寻找。


       格式:app.use(express.static(托管的目录的路径));


app.use(express.static('./public'));

4. 第三方中间件


       属于第三方模块,使用前需要先下载安装。


5. 错误处理中间件


//格式:在路由中
app.get('/list',(req,res,next)=>{
     next(错误信息) //把错误交给错误处理中间件
});
eg:
//添加错误处理中间件,拦截所有路由中产生的错误
app.use((err,req,res,next)=>{
  //err 所接收到的路由传递过来的错误信息
  console.log(err);
  res.status(500).send({code:500,msg:'服务器端错误!'});  //响应错误
});

三、MySQL模块

1. 使用步骤


(1)引入MySQL模块


const mysql = require('mysql');

(2)创建一个连接对象


const c = mysql.createConnection({
    host:'127.0.0.1',
    port:'3306',
    user:'root',
    password:'',
    database:'tedu'
});

(3)执行SQL命令


c.query('select * from emp where ename=?',[str],(err,result)=>{
    if(err) throw err;
    console.log(result);
});

2. 连接池


       创建的一批连接,可以被反复使用,用完后会归还。


(1)引入MySQL模块


const mysql = require('mysql');

(2)createPool( )  创建连接池对象


const pool = mysql.createPool({
    host:'127.0.0.1',
    port:'3306',
    user:'root',
    password:'',
    database:'tedu',
    connectionLimit:15 //连接池数量
});

(3)query( )  执行SQL命令


pool.query('select * from emp',(err,result)=>{
    if (err) throw err;
    console.log(result);
});

四、RESTful接口

       接口是后端为前端提供的动态资源(对数据的增删改查),而RESTful则是一种接口设计规范。


1. URL


http://127.0.0.1:8080/v1/emps          //多个资源

http://127.0.0.1:8080/v1/emps/3       //单个资源(v1版本号、emps 资源名称(复数形式)、3编号)

http://127.0.0.1:8080/v1/users/login //对资源的特殊操作例如登录


2. 请求方法


       对资源的操作方式,包括 get(获取资源)、post(新建资源)、delete(删除资源)、put(修改资源)。


3. 过滤数据


eg:        


http://127.0.0.1:8080/v1/products?price1=4000&price2=5000   //过滤一组价格区间的数据

http://127.0.0.1:8080/v1/products?pno=1&count=9                    //通过分页过滤


4. 返回结果


       格式为 JSON 对象:字符串形式的对象,属性名必须是双引号,属性值是字符串且必须用双引号,包含状态码(人为规定)、消息、数据。格式如下:


{
     "code":200,
     "msg":"登录成功"
}
{ "code":200,"msg":"登录成功","data":[ ] }

推荐接口工具: ApiPost

47582c0b67044616a01922cc6fee4199.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
JavaScript 安全 中间件
深入浅出Node.js中间件机制
【10月更文挑战第36天】在探索Node.js的奥秘之旅中,中间件的概念如同魔法一般,它让复杂的请求处理变得优雅而高效。本文将带你领略这一机制的魅力,从概念到实践,一步步揭示如何利用中间件简化和增强你的应用。
|
17天前
|
消息中间件 JavaScript 中间件
深入浅出Node.js中间件机制
【10月更文挑战第24天】在Node.js的世界里,中间件如同厨房中的调料,为后端服务增添风味。本文将带你走进Node.js的中间件机制,从基础概念到实际应用,一探究竟。通过生动的比喻和直观的代码示例,我们将一起解锁中间件的奥秘,让你轻松成为后端料理高手。
20 1
|
29天前
|
JSON 前端开发 API
使用微信JS-SDK调用发票接口的完整开发指南
本文介绍了如何使用微信JS-SDK的`chooseInvoiceTitle`接口来调用微信的发票功能。通过微信发票接口,用户可以选择开具个人或单位发票,并获取相关发票信息,如抬头、税号、公司地址等。在文中,详细描述了JS-SDK的初始化、发票接口的调用方式,并提供了完整的代码示例。文章还介绍了如何处理返回的发票信息,帮助开发者快速集成微信发票功能。
70 2
|
1月前
|
JSON JavaScript 中间件
深入浅出Node.js中间件机制
本文将带你探索Node.js中一个核心概念——中间件机制。我们将通过浅显的语言和生动的比喻,揭示中间件如何作为请求和响应之间的“交通枢纽”,在应用程序中起到至关重要的作用。从基础原理到实际应用,你将了解到中间件不仅简化了代码结构,还提高了开发效率,是Node.js开发不可或缺的一部分。
45 1
|
2月前
|
安全 API 开发者
Web 开发新风尚!Python RESTful API 设计与实现,让你的接口更懂开发者心!
在当前的Web开发中,Python因能构建高效简洁的RESTful API而备受青睐,大大提升了开发效率和用户体验。本文将介绍RESTful API的基本原则及其在Python中的实现方法。以Flask为例,演示了如何通过不同的HTTP方法(如GET、POST、PUT、DELETE)来创建、读取、更新和删除用户信息。此示例还包括了基本的路由设置及操作,为开发者提供了清晰的API交互指南。
107 6
|
1月前
|
SQL JavaScript 关系型数据库
Node.js 连接 MySQL
10月更文挑战第9天
19 0
|
1月前
|
JavaScript 安全 中间件
深入浅出Node.js中间件机制
【10月更文挑战第4天】在探索Node.js的海洋中,中间件机制犹如一座灯塔,为开发者指引方向。本文将带你一探究竟,从浅入深地理解这一核心概念。我们将通过生动的比喻和实际代码示例,揭示中间件如何在请求和响应之间搭建桥梁,实现功能的扩展与定制。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和深入的理解。
40 0
|
2月前
|
JavaScript 前端开发 中间件
深入浅出Node.js中间件模式
【9月更文挑战第13天】本文将带你领略Node.js中间件模式的魅力,从概念到实战,一步步揭示如何利用这一强大工具简化和增强你的Web应用。我们将通过实际代码示例,展示中间件如何在不修改原有代码的情况下,为请求处理流程添加功能层。无论你是前端还是后端开发者,这篇文章都将为你打开一扇通往更高效、更可维护代码的大门。
|
3月前
|
JavaScript 数据安全/隐私保护 Python
网易云音乐搜索接口JS逆向: Params、encSecKey加密和AES实战
网易云音乐搜索接口JS逆向: Params、encSecKey加密和AES实战
159 4
|
3月前
|
JavaScript 中间件 开发者
深入浅出Node.js中间件机制
【8月更文挑战第31天】本文将带你领略Node.js中间件的奥秘,通过直观的案例分析,揭示其背后的设计哲学。你将学会如何运用中间件构建强大而灵活的后端应用,以及在面对复杂业务逻辑时如何保持代码的清晰与高效。