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

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
性能测试 PTS,5000VUM额度
云原生网关 MSE Higress,422元/月
简介: 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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7天前
|
监控 中间件 关系型数据库
中间件MySQL性能瓶颈
【7月更文挑战第13天】
27 12
|
1月前
|
JavaScript 前端开发 关系型数据库
Node.js 连接 MySQL
Node.js 连接 MySQL
24 5
|
1月前
|
XML JavaScript API
Node.js RESTful API
Node.js RESTful API
20 1
|
1月前
vue.js+node.js+mysql在线聊天室源码
vue.js+node.js+mysql在线聊天室源码 技术栈:vue.js+Element UI+node.js+socket.io+mysql
131 3
|
2月前
|
Web App开发 存储 开发框架
使用Node.js构建RESTful API
【5月更文挑战第20天】本文指导使用Node.js和Express构建RESTful API。首先确保安装了Node.js,然后初始化项目,安装Express框架。在`app.js`中创建API,定义GET路由`/api/users`返回用户列表。运行服务器并测试API,最后讨论如何扩展API和提升其功能。这是一个构建RESTful API的基础入门教程。
|
2月前
|
Web App开发 JavaScript Cloud Native
构建高效可扩展的RESTful API:Node.js与Express框架实践指南构建未来:云原生架构在企业数字化转型中的关键作用
【5月更文挑战第29天】 在数字化时代的驱动下,后端服务架构的稳定性与效率成为企业竞争力的关键。本文深入探讨了如何利用Node.js结合Express框架构建一个高效且可扩展的RESTful API。我们将从设计理念、核心模块、中间件应用以及性能优化等方面进行系统性阐述。通过实例引导读者理解RESTful接口设计的最佳实践,并展示如何应对大规模并发请求的挑战,确保系统的高可用性与安全性。
|
2月前
|
JSON JavaScript 中间件
利用Node.js和Express构建RESTful API服务
利用Node.js和Express构建RESTful API服务
33 0
|
2月前
|
缓存 监控 JavaScript
Node.js中构建RESTful API的最佳实践
【4月更文挑战第30天】本文介绍了在Node.js中构建RESTful API的最佳实践:选择合适的框架(如Express、Koa)、设计清晰的API接口(遵循HTTP动词和资源路径)、实现认证授权(JWT、OAuth 2.0)、错误处理、限流缓存、编写文档和测试,以及监控性能优化。这些实践有助于创建健壮、可维护和易用的API。
|
12天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
25 2
|
12天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
28 4