pb-to-ts-api
Version:
help you transfer protobuf file to your custom d.ts and api request method
41 lines (37 loc) • 1.39 kB
text/typescript
import express, { Express } from 'express';
import fs from 'fs';
import { IOptions } from '../interfaces/IOptions';
import { getRequestMethod } from '../utils/getRequestMethod';
/**
* 初始化 mock server
* @param {IOptions} options 用户自定义配置
* @returns {Express} mockServer 通过express实例化的mock server app
*/
export function initServer(options: IOptions) {
const mockServer = express();
const { port = '3000' } = options;
mockServer.listen(+port, () => {
console.log(`mock server listening on port ${port}`);
});
return mockServer;
}
/**
* 拿到mock文件,生成mock server
* @param {String} mockFilePath mock文件的路径
* @param {Express} mockServer express server 对象
* @param {IOptions} options 用户自定义配置
*/
export async function generateMockRoute(mockFilePath: string, mockServer: Express, options: IOptions) {
const { baseUrl } = options;
const mockFile = await fs.promises.readFile(mockFilePath, { encoding: 'utf-8' });
const json = JSON.parse(mockFile);
for (const apiName in json) {
if (Object.hasOwnProperty.call(json, apiName)) {
const requestMethod = getRequestMethod(apiName);
mockServer[requestMethod](`${baseUrl}${apiName}`, (req, res) => {
res.send(json[apiName]);
});
console.log(`mockServer generate mock route: ${baseUrl}${apiName} success`);
}
}
}