【问题标题】:Proxy webpack-dev-server based on request payload to return json file基于请求负载的代理 webpack-dev-server 返回 json 文件
【发布时间】:2017-05-17 07:17:20
【问题描述】:
所以我已经搜索过,我认为我看到了整个互联网,但没有解决我遇到的问题。
我有多个要模拟的 http 请求。所有请求都具有相同的 url,但根据包含 graphQl 查询的 requestPayload 有所不同。基于此查询,我想返回一个特定的 json 文件。我发现的所有代理设置都可以处理参数,但不处理基于 requestPayload 的响应。
【问题讨论】:
标签:
json
mocking
webpack-dev-server
endpoint
【解决方案1】:
你看过这个功能吗?
https://webpack.js.org/configuration/dev-server/#devserver-before
只要 webpack-dev-server 是 express 应用程序的一个实例,您就可以在 before/after 挂钩中设置它。 Hooks 获取应用(服务器)实例作为第一个参数。
所以对于您的情况,您的 webpack 开发配置如下所示:
module.exports = {
//...
devServer: {
before: function(app) {
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.get('/some/path/graphql', function(req, res) {
var query = req.body;
// ...your custom logic of
// specific query handling goes here
if (condition(query)) {
res.json({ mockedResponse: 'foo' });
} else {
res.json({ mockedResponse: 'bar' });
}
});
}
}
};
UPD:请记住,如果您正在为 devServer 使用代理配置,您可能希望使用 after 挂钩而不是 before 来让您的请求在需要时被代理。