如何使用Angular-CLI重写反向代理中的路径?

时间:2017-02-01 09:16:54

标签: angular proxy angular-cli

我已经使用angular2 CLI设置了反向代理,如下所示:

{
  "/api/customer/*": {
    "target": "http://localhost:9010",
    "secure": false
  }
}

我的问题是远程API在路径/客户上公开服务,但反向代理发送的请求在/ api / customer上。

有没有办法从反向代理发送的请求中删除/ api? (不要回答“只需从你的http请求中删除/ api”,因为我在/ customer上有一个有角度的路线。)

谢谢,

纳米

2 个答案:

答案 0 :(得分:10)

您可以使用pathRewrite选项轻松完成此操作,如下所示:

proxy: {
    '/api/customer/*': {
        target: 'http://localhost:9010',
        pathRewrite: {'^/api' : ''}
    }
}

您还可以查看Webpack documentation以获取更多信息。

答案 1 :(得分:0)

使用与Alex答案相同的配置进行此工作。但是,将您的实际API请求发送到前端Web服务器而不是后端服务器至关重要。

例如,我的后端在端口2777上运行,而我的前端在端口1777上运行

module.exports = {
  '/api': {
    target: 'http://localhost:2777',
    pathRewrite: {'^/api': ''},
    logLevel: 'debug'
  }
}

environment.ts中API请求的基本URL为:

apiBaseUrl: 'http://localhost:1777/api'

实际请求如下:

login(userCredentials: UserCredentials): Observable<User> {
  return this.http.post(environment.apiBaseUrl + '/auth/login', userCredentials).pipe(
    tap((user: User) => { this.authUser = user })
  )
}

这很棒,因为它避免了后端服务器上对CORS策略的需求。希望这对某人有帮助。当我执行此设置时,我总是忘记将HTTP请求指向前端服务器,这会导致无休止地找出问题所在。