webpack-dev-server - 支持使用代理的POST,PUT,Delete方法

问题描述 投票:0回答:2

我使用webpack-dev-server作为我原始API URL的代理,以避免与CORS相关的问题,并根据环境动态指向Dev,UAT,Mock服务器URL。

对于Mock dev - 我更喜欢使用本地文件系统中的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 dev服务器利用http-proxy-middleware可选地将请求代理到单独的,可能是外部的后端服务器。

webpack webpack-dev-server http-proxy http-proxy-middleware
2个回答
0
投票

由于Webpack dev服务器在内部使用http-proxy-middleware来选择性地将请求代理到其他服务器。

所以,我开了一张票:https://github.com/chimurai/http-proxy-middleware/issues/151

将来会寻找更好的解决方案。

但是暂时,我通过在API Util本身中覆盖HTTP方法,然后将其传递给Webpack-dev-server,找到了一个针对需求/问题的解决方法。

// Convert all the Request Method to Get ***ONLY IF*** MOCK-Server is running
if (process.env.IS_MOCK_SERVER) {
    payload.method = 'get';
}

0
投票

经过多次修补后发现这个设置我正在使用http代理中间件中的onProxyReq事件将所有请求转换为“GET”。我在角度cli代理设置的上下文中使用它,但对于任何webpack dev服务器实例都可以使用它

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

© www.soinside.com 2019 - 2024. All rights reserved.