基于node.js + express框架实现的简单服务端(三)
一、前言
本文主要写服务请求中路由相关的部分,将详细介绍如何设计路由,如何处理网络请求,如何调用数据库操作等内容。
二、创建ClientRouter脚本
1.导入模块
ClientRouter是用来处理具体的网络请求和进行相应的数据库操作处理,所以需要导入express和ClientController模块
import { Request, Response } from "express";
import { ClientController } from "../Controllers/clientController";
2.创建ClientController对象
首先定义ClientController类型的变量,然后在ClientRouter类的构造函数里面实例化ClientController对象。
private clientController: ClientController;
constructor() {
this.clientController = new ClientController()
}
3.网络请求处理方法
添加routes方法来进行网络请求处理,网路请求中包含多种具体的请求方法,像:get(获取),post(发送),patch(更新),delete(删除)等方法,常用的就这四种请求,每种情况所调用的数据库操作是不同的,所以需要各自去具体处理,代码如下:
routes = (app) => {
app.route("/api/client")
.get((req, res) => {
this.clientController.getClient(req, res);
})
.post(this.clientController.createClient)
.patch(this.clientController.updateClient)
.delete(this.clientController.deleteClient);
}
方法传递的参数app是express的实例对象,它里面有封装好的处理方法。app.route(“”)方法是来进行路由处理的方法,它里面传递的参数是定义好的一个服务访问地址,前面加上代码中定义的服务的地址和端口号就可以直接访问了,像上面代码中的详细地址就是“http://localhost:8888/api/client”,后面的 .get()方法就对应处理的是前端发送的是get网络请求,在app.route()后面加什么方法就处理前端发送的什么请求。get()里面就是调用ClientController里面的getClient()方法,来进行数据库的查找操作,get方法里面可以写成上面代码的形式,也可写成下面post里面的形式,你如果有什么特殊处理就写成第一种,可以在方法里面直接进行操作,若是不需要什么处理,就写成下面的形式就可以了。
4.导出模块
导出ClientRouter模块,在其他地方进行引用。
export class ClientRouter
直接导出这个类,在其他地方创建类的对象就可以了。
三、创建Router脚本
1.导入模块
Router脚本是用来统一管理所有的功能类router脚本的,所以需要导入每个router脚本。
import { ClientRouter } from "./clientRouter";
2.创建实例对象
首先定义ClientRouter类型的变量,然后在Router类的构造函数里面创建实例对象。
private client: ClientRouter;
constructor() {
this.client = new ClientRouter();
}
3.调用实例方法
创建routeInit方法,调用ClientRouter类里的routes方法来进行路由查找。
routeInit = (app) => {
this.client.routes(app);
}
routeInit里传递的参数app是express的实例对象,它直接传递给ClientRouter对象的routes方法,去直接处理Client相关的操作。
4.导出模块
导出ClientRouter模块,在其他地方进行引用。
export class ClientRouter
直接导出这个类,在其他地方创建类的对象就可以了。
四、初始化路由
1.导入Router 模块
在app脚本中导入Router模块,在服务启动的时候去调用它。
import { Router } from "./Routers/Router";
2.创建Router实例对象
直接创建Router的实例对象,然后在app的构造函数中去调用它,这样在服务启动的时候就可以调用Router实例方法,就实现了服务已启动就开始监听各种服务请求,当服务请求进来的时候,根据请求地址去查找对应的路由,找到具体的功能router脚本,然后根据请求方法去找到对应的Controller的数据库操作,执行完操作之后再把数据结果返回给前端,这样完整的网络请求处理流程就完成了,代码如下:
routes: Router = new Router();
constructor() {
this.initRouter();
this.mongoCon();
this.routes.routeInit(this.app);
}
3.添加辅助处理操作
由于前端发送的请求数据是在request的body字段里面的,这个里面的值是需要进行处理才能拿到使用的,同时我们也需要对发送的请求进行处理才能取到对应的请求字段,这里我们导入了body-parser的工具包,使用它里面的方法来就行请求数据格式处理,在使用之前需要使用npm来安装这个包。
创建initRouter方法来进行辅助功能操作,代码如下:
private initRouter = () => {
this.app.use(express.json());
this.app.use(bodyParser.json());
this.app.use(bodyParser.urlencoded({ extended: true }));
}
这样对于Client相关的服务端操作已经全部写完了,服务端所涉及的一些功能也基本完成了,从前端发起请求,到后端接收请求,进行请求拆分,再到路由查找,找到对应的Controller,然后去调用具体的数据库操作,最后将处理的数据结果返回给前端,这就是基本服务端请求处理流程,本系列已经将这些服务端相关的操作内容全部写完了,在下一篇文章中将会写如何进行服务端的API测试,使用什么工具,如何进行数据库的可视化数据管理,将会演示Client的详细的接口调用及处理过程,文章将会持续更新。
服务端完整的工程压缩包在本系列最后一篇末尾有下载链接,各位可以根据需要去下载,谢谢支持。