首页 > 解决方案 > 来自电子的角度应用程序内的服务ajax请求

问题描述

我正在尝试使用 Angular 编写的现有 Web 应用程序并将其包装在电子中。我已经让电子打开 Angular 应用程序,但我希望电子包装器能够为 ajax 请求提供服务,而不是应用程序进入 Web 服务。例如,角度应用程序尝试在“api/subscriptions”处获取,我希望它从电子端请求,然后从本地文件系统获取电子服务数据。有没有办法做到这一点,或者我是否需要制作一个仅在为电子环境构建时才包含的自定义角度服务?我想将 Angular 应用程序尽可能保持为非特定环境。

标签: angularelectron

解决方案


使用WebRequest并拦截任何请求,然后返回您的自定义响应。

它还接受一个过滤器,因此您只能拦截说“/api/subscriptions”等。

const {session} = require('electron')

session.defaultSession.webRequest.onBeforeRequest((details, callback) => {
    //Stopping original request

    //Fetch from some file etc.
    const response = fs.readFile .... //Or wherever

    //Make sure to call the callback with response
    callback({response})
})

推荐阅读