Skip to content

Neutron-Bomb/Zstu-Api

Repository files navigation

Zstu-Api

简要说明

Zstu-Api相当于是Api Bridger,Zstu-Api会转发给定请求并将格式转换为更加友好的格式。
本程序为个人学习Typescript & MongoDB练手之作,后续可能将不再进行维护。

安装

1. 安装MongoDB,并开启MongoDB服务器,无需任何设置
2. 克隆并编译本项目
git clone https://github.com/Neutron-Bomb/Zstu-Api
cd Zstu-Api
npm install && npm install tsc && tsc
3. 运行
node out/app.js

使用

使用文档在doc下,目前已加入10个接口

开发

目录介绍

├─config     配置文件存放
├─controller 处理用户请求的Handler类
├─core       实际与接口交互的底层类
├─route      用户请求路径匹配
├─model      数据库模型
└─util       工具类

Router

例如router/CommonRouter.ts

CommonRouter.get('/electricity/:studentId', CommonController.ElectricityHandler)

匹配请求为electricity/:studentId的请求,electricity/2022111111111即为合法请求,请求处理交给CommonController.ElectricityHandler处理

Controller

async function ElectricityHandler(req: Request, res: Response) {
    const studentId = req.params.studentId
    res.json(await Common.Electricity(studentId))
}

控制器作用只限于获取相关参数,并构建底层类进行处理,例如上述Controller获取了studentId,并传入Common.Electricity进行处理,最终结果以json格式返回

Core

public static async Electricity(studentId: string) {
        if (studentId.length != 13 || !Functions.isNumber(studentId)) {
            throw Error('Param studentId error')
        }
        let url = 'some_url'
        let payload = {
            ...
        }
        let res = await this.session({
            url: url,
            method: 'post',
            data: QueryString.stringify(payload),
            validateStatus: () => true
        }).then(value => {
            return value.data
        })
        return Formatter.Electricity(res)
    }

Core请求实际接口,获取原始数据,并传入Formatter进行进一步格式化处理

Formatter

public static Electricity(json: any) {
        let body = JSON.parse(json['body'])
        if (body['message'] == '...') {
            throw Error('some error')
        }
        return {
            code: 0,
            msg: '获取成功',
            data: {
                ...
            }
        }
    }

若是原始数据出现问题,或者请求失败,应直接抛出异常,异常会被Express中间件捕获并统一返回错误信息给用户

About

浙江理工大学Api Bridger

Resources

License

Stars

Watchers

Forks