mirror of
https://github.com/WeBankFinTech/fes.js.git
synced 2025-05-22 06:35:33 +08:00
fix(fes-cli): 修复mock对post请求的支持
post请求时对body内容没进行json解析,导致无法mock;同时修复proxy对post请求的支持
This commit is contained in:
parent
97f35967af
commit
e4815cb81d
@ -143,7 +143,7 @@ module.exports = function webpackConfig(configs, webpack, mode) {
|
|||||||
{
|
{
|
||||||
loader: require.resolve('cache-loader'),
|
loader: require.resolve('cache-loader'),
|
||||||
options: {
|
options: {
|
||||||
cacheDirectory: path.resolve(configs.folders.PROJECT_DIR, 'node_modules/.cache/vue-loader')
|
cacheDirectory: path.resolve(configs.folders.PROJECT_DIR, '.cache/vue-loader')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -152,7 +152,7 @@ module.exports = function webpackConfig(configs, webpack, mode) {
|
|||||||
compilerOptions: {
|
compilerOptions: {
|
||||||
preserveWhitespace: false
|
preserveWhitespace: false
|
||||||
},
|
},
|
||||||
cacheDirectory: path.resolve(configs.folders.PROJECT_DIR, 'node_modules/.cache/vue-loader')
|
cacheDirectory: path.resolve(configs.folders.PROJECT_DIR, '.cache/vue-loader')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -303,7 +303,7 @@ module.exports = function webpackConfig(configs, webpack, mode) {
|
|||||||
{
|
{
|
||||||
loader: require.resolve('cache-loader'),
|
loader: require.resolve('cache-loader'),
|
||||||
options: {
|
options: {
|
||||||
cacheDirectory: path.resolve(configs.folders.PROJECT_DIR, 'node_modules/.cache/babel-loader')
|
cacheDirectory: path.resolve(configs.folders.PROJECT_DIR, '.cache/babel-loader')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -325,7 +325,9 @@ module.exports = function webpackConfig(configs, webpack, mode) {
|
|||||||
devtool: isDev && 'cheap-module-eval-source-map',
|
devtool: isDev && 'cheap-module-eval-source-map',
|
||||||
|
|
||||||
plugins: [
|
plugins: [
|
||||||
new HardSourceWebpackPlugin(),
|
new HardSourceWebpackPlugin({
|
||||||
|
cacheDirectory: path.resolve(configs.folders.PROJECT_DIR, '.cache/hard-source')
|
||||||
|
}),
|
||||||
|
|
||||||
/* config.plugin('progress') */
|
/* config.plugin('progress') */
|
||||||
new webpack.ProgressPlugin(),
|
new webpack.ProgressPlugin(),
|
||||||
|
@ -15,28 +15,6 @@ const util = require('./util');
|
|||||||
|
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
|
|
||||||
const proxy = httpProxy.createProxyServer();
|
|
||||||
|
|
||||||
proxy.on('open', (proxySocket) => {
|
|
||||||
proxySocket.on('data', (chunk) => {
|
|
||||||
log.message(chunk.toString());
|
|
||||||
});
|
|
||||||
});
|
|
||||||
proxy.on('proxyRes', (proxyRes) => {
|
|
||||||
log.message(
|
|
||||||
'RAW Response from the target',
|
|
||||||
JSON.stringify(proxyRes.headers, true, 2)
|
|
||||||
);
|
|
||||||
const cookie = proxyRes.headers['set-cookie'];
|
|
||||||
if (cookie && cookie.length > 0) {
|
|
||||||
for (let i = 0; i < cookie.length; i++) {
|
|
||||||
cookie[i] = cookie[i].replace('Secure', '');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
proxy.on('error', (e) => {
|
|
||||||
log.error(e);
|
|
||||||
});
|
|
||||||
|
|
||||||
// 根据参数个数获取配置
|
// 根据参数个数获取配置
|
||||||
function getOption(arg) {
|
function getOption(arg) {
|
||||||
@ -135,6 +113,41 @@ const createMock = function () {
|
|||||||
};
|
};
|
||||||
|
|
||||||
cgiMock.proxy = function (host) {
|
cgiMock.proxy = function (host) {
|
||||||
|
const proxy = httpProxy.createProxyServer();
|
||||||
|
proxy.on('open', (proxySocket) => {
|
||||||
|
proxySocket.on('data', (chunk) => {
|
||||||
|
log.message(chunk.toString());
|
||||||
|
});
|
||||||
|
});
|
||||||
|
proxy.on('proxyReq', (proxyReq, req) => {
|
||||||
|
proxyReq.setHeader('Host', url.parse(host).host);
|
||||||
|
if (req.body) {
|
||||||
|
const bodyData = JSON.stringify(req.body);
|
||||||
|
// incase if content-type is application/x-www-form-urlencoded -> we need to change to application/json
|
||||||
|
proxyReq.setHeader('Content-Type', 'application/json');
|
||||||
|
proxyReq.setHeader('Content-Length', Buffer.byteLength(bodyData));
|
||||||
|
// stream the content
|
||||||
|
proxyReq.write(bodyData);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
proxy.on('proxyRes', (proxyRes) => {
|
||||||
|
log.message(
|
||||||
|
'RAW Response from the target',
|
||||||
|
JSON.stringify(proxyRes.headers, true, 2)
|
||||||
|
);
|
||||||
|
const cookie = proxyRes.headers['set-cookie'];
|
||||||
|
if (cookie && cookie.length > 0) {
|
||||||
|
for (let i = 0; i < cookie.length; i++) {
|
||||||
|
cookie[i] = cookie[i].replace('Secure', '');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
proxy.on('error', (e) => {
|
||||||
|
log.error(e);
|
||||||
|
});
|
||||||
|
proxy.on('proxyReq', (proxyReq) => {
|
||||||
|
proxyReq.setHeader('Host', url.parse(host).host);
|
||||||
|
});
|
||||||
process.nextTick(() => {
|
process.nextTick(() => {
|
||||||
router.use((req, res) => {
|
router.use((req, res) => {
|
||||||
proxy.web(req, res, {
|
proxy.web(req, res, {
|
||||||
@ -143,9 +156,6 @@ const createMock = function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
proxy.on('proxyReq', (proxyReq) => {
|
|
||||||
proxyReq.setHeader('Host', url.parse(host).host);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return cgiMock;
|
return cgiMock;
|
||||||
@ -192,6 +202,7 @@ const loadCustomRoute = function (app) {
|
|||||||
|
|
||||||
module.exports = function (app) {
|
module.exports = function (app) {
|
||||||
app.use(logger('dev'));
|
app.use(logger('dev'));
|
||||||
|
app.use(bodyParser.json());
|
||||||
app.use(
|
app.use(
|
||||||
bodyParser.urlencoded({
|
bodyParser.urlencoded({
|
||||||
extended: false
|
extended: false
|
||||||
|
Loading…
x
Reference in New Issue
Block a user