1

首先说下需求,mockApi指的就是模拟后台,我们在前台发出的请求可以不由后台来接收而是由我们自己编写的模拟后台来接受来初步验证前台的正确性也避免了前后台进度不一导致的开发上的时间延误。

在之前的项目中,我们所使用的mockApi的原理是拦截由前台向后台发起的请求,以做到不让后台进行处理而是由我们的mockApi进行处理。

而我们现在用的是另一种处理方法——通过配置后缀来改变其请求的地址,并且express router可以做到直接在前台接收url请求并进行自定义处理返回数据或是报错。

比如我们可以设置为请求以api/开头去请求后台,以mockApi/开头的请求去请求mockapi。

下面来说一下具体操作:
此mockapi相当于是一个独立的node项目,可以npm run tart启动
主体代码:

import express, {Express, Request, Response} from 'express';
import dotenv from 'dotenv';
import bodyParser from 'body-parser';
import md5 from 'md5';
import {base64encode} from 'nodejs-base64';
import {OaController} from './controller/oa.controller';

const fs = require('fs');

// 获取.env文件中的配置信息
dotenv.config();

// 初始化express, 端口,json 解析器
const app: Express = express();
const port = process.env.PORT;

//我们可以直接在此文件中书写接口并做出相应处理
//识别get方法,url:/api/hrm/resful/
app.get('/', (req: Request, res: Response) => {
  res.send('Express + TypeScript Server');
});

//实体化rouer
const router = express.Router();
//调用静态方法,处理对应的url并返回mock数据
OaController.registerRouter(router);
//设定url前缀
app.use('/api/hrm/resful', router);

app.listen(port, () => {
  console.log(`⚡️[server]: Server is running at http://localhost:${port}`);
});

从这里我们可以看出这个项目很简单,我们可以通过.env文件来配制项目启动的端口从而正常启动项目;
.env:

PORT=8088
//静态方法,通过传入的express中的router来实现express处理url的功能
import {Router, Request, Response} from 'express';
export class OaController {
  private static instance: OaController;

  static registerRouter(router: Router): OaController {
    if (!OaController.instance) {
      OaController.instance = new OaController();
    }

    router.post('/page, (res, req) => {
      OaController.instance.getHrmUserInfoWithPage(res, req);
    });

    return OaController.instance;
  }

    //处理page请求,设定其响应
  private page(res: Request, req: Response) {
    req.send({ code: 400, message: 'Internal Error' })
  }
}

由此我们可以看出通过express构建的mockApi更贴近于实际后台,我们可以对其进行更多的操作,如根据传入的数据进行更为真实的错误处理而不是简单的进行断言。


李明
441 声望18 粉丝

引用和评论

0 条评论