mock-service-plugin
Version:
42 lines (38 loc) • 1.43 kB
JavaScript
;
var Mock = require('mockjs');
var sync = require('../../node_modules/csv-stringify/lib/sync.js');
var baseHandler = require('./base-handler.js');
class CsvResponseHandler extends baseHandler.BaseResponseHandler {
async handle(req, res, route) {
try {
this.setHeaders(res, "text/csv");
// 如果模板是字符串,尝试解析为对象
const responseTemplate = typeof route.responseTemplate === "string"
? JSON.parse(route.responseTemplate)
: route.responseTemplate;
// 使用 mockjs 处理数据
const mockData = Mock.mock(responseTemplate);
// 确保数据是数组格式
const dataArray = Array.isArray(mockData) ? mockData : [mockData];
// 转换为 CSV
const csv = sync.stringify(dataArray, {
header: true,
columns: this.getColumns(dataArray[0]),
});
res.send(csv);
}
catch (error) {
this.handleError(res, error instanceof Error ? error : new Error(String(error)));
}
}
getColumns(data) {
if (!data)
return {};
return Object.keys(data).reduce((acc, key) => {
acc[key] = key;
return acc;
}, {});
}
}
exports.CsvResponseHandler = CsvResponseHandler;
//# sourceMappingURL=csv-handler.js.map