基于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的详细的接口调用及处理过程,文章将会持续更新。

服务端完整的工程压缩包在本系列最后一篇末尾有下载链接,各位可以根据需要去下载,谢谢支持。

猜你喜欢

转载自blog.csdn.net/m0_37857819/article/details/105479472