webpack-dev-server - 支持 POST、PUT、使用代理删除方法
webpack-dev-server - support for POST, PUT, Delete Methods using proxy
我正在使用 webpack-dev-server 作为我原来 API URL 的代理以避免 CORS 相关问题并动态指向 Dev、UAT、模拟服务器 URL 基于环境。
对于 Mock 开发人员 - 我更喜欢使用来自本地文件系统的 JSON 并且 它为所有 GET 请求服务它的目的。
如何添加对'POST, PUT, DELETE'的支持以便本地JSON可以直接服务?
一种可能的方法是 - 将 HTTP 请求方法覆盖为 GET,因为我没有传递任何负载。但是我找不到任何配置。
以下是当前配置:
if (IS_MOCK_SERVER) {
devServer.proxy = {
'/api': {
target: 'http://localhost:9090/data',
secure: false,
pathRewrite: function(req, options) {
return req + '.json'
}
}
}
} else {
devServer.proxy = {
'/api': {
target: 'http://dev-server-url.com',
secure: false
}
}
}
我尝试深入研究 official documents,但在这个主题上没有得到太多支持。
Webpack 开发服务器利用 http-proxy-middleware 选择性地将请求代理到一个单独的、可能是外部的后端服务器。
因为 Webpack 开发服务器在内部使用 http-proxy-middleware 来选择性地将请求代理到其他服务器。
所以,我在 : https://github.com/chimurai/http-proxy-middleware/issues/151
开了一张票
以后会寻找更好的解决方案。
但目前,我找到了 requirement/problem 的一种解决方法,方法是在将 API Util 本身传递给 Webpack-dev-server 之前重写 HTTP 方法。
// Convert all the Request Method to Get ***ONLY IF*** MOCK-Server is running
if (process.env.IS_MOCK_SERVER) {
payload.method = 'get';
}
经过大量修改后,我发现了这个设置,我用它来使用 http 代理中间件中的 onProxyReq 事件将所有请求转换为 "GET"。我在 angular cli 代理设置的上下文中使用它,但对于任何 webpack 开发服务器实例都可以正常工作
onProxyReq: function(proxyReq, req, res) {
// convert all api requests (POST/PUT/DELETE) to GET so they work in webpack dev server for mocking
proxyReq.method = 'GET';
}
https://github.com/nodejitsu/node-http-proxy#listening-for-proxy-events
我正在使用 webpack-dev-server 作为我原来 API URL 的代理以避免 CORS 相关问题并动态指向 Dev、UAT、模拟服务器 URL 基于环境。
对于 Mock 开发人员 - 我更喜欢使用来自本地文件系统的 JSON 并且 它为所有 GET 请求服务它的目的。
如何添加对'POST, PUT, DELETE'的支持以便本地JSON可以直接服务?
一种可能的方法是 - 将 HTTP 请求方法覆盖为 GET,因为我没有传递任何负载。但是我找不到任何配置。
以下是当前配置:
if (IS_MOCK_SERVER) {
devServer.proxy = {
'/api': {
target: 'http://localhost:9090/data',
secure: false,
pathRewrite: function(req, options) {
return req + '.json'
}
}
}
} else {
devServer.proxy = {
'/api': {
target: 'http://dev-server-url.com',
secure: false
}
}
}
我尝试深入研究 official documents,但在这个主题上没有得到太多支持。
Webpack 开发服务器利用 http-proxy-middleware 选择性地将请求代理到一个单独的、可能是外部的后端服务器。
因为 Webpack 开发服务器在内部使用 http-proxy-middleware 来选择性地将请求代理到其他服务器。
所以,我在 : https://github.com/chimurai/http-proxy-middleware/issues/151
开了一张票以后会寻找更好的解决方案。
但目前,我找到了 requirement/problem 的一种解决方法,方法是在将 API Util 本身传递给 Webpack-dev-server 之前重写 HTTP 方法。
// Convert all the Request Method to Get ***ONLY IF*** MOCK-Server is running
if (process.env.IS_MOCK_SERVER) {
payload.method = 'get';
}
经过大量修改后,我发现了这个设置,我用它来使用 http 代理中间件中的 onProxyReq 事件将所有请求转换为 "GET"。我在 angular cli 代理设置的上下文中使用它,但对于任何 webpack 开发服务器实例都可以正常工作
onProxyReq: function(proxyReq, req, res) {
// convert all api requests (POST/PUT/DELETE) to GET so they work in webpack dev server for mocking
proxyReq.method = 'GET';
}
https://github.com/nodejitsu/node-http-proxy#listening-for-proxy-events