我有一台服务器用来托管我的 Angular Universal Express-Server,它恰好是托管我的 API 的同一台服务器。
目前,我有一个工厂在模块中构建我的 API 服务,并通过环境文件交换设置基本 URL 路径
import { environment } from "src/environments/environment"
...
export function apiConfigFactory(): apiConfiguration {
const params: apiConfigurationParameters = {
basePath: environment.apiEndpoint,
}
return new apiConfiguration(params)
}
当使用 Angular 作为常规 SPA 时,我只是告诉它使用上面的环境文件交换方法通过 cloudflare 向正确的端点发出请求。
使用 SSR 时,我希望发出的请求直接调用我的服务器,而不必路由到 Cloudflare 并返回。我相信我可以使用
isPlatformBrowser
确定 basePath,并在 environment.apiEndpoint
和 environment.localApiEndpoint
之间来回切换,但是这会泄漏我在本地使用的端点。它不是主要的,但我希望能够尽可能避免这种情况。
有没有办法在不泄漏环境文件中的 SSR 端点的情况下,在角度通用 SSR 和 SPA 中进行单独的端点调用?
这至少可以通过为渲染服务器端和单页应用程序端使用单独的环境文件来实现。
使用
...server.configuration.<configName>.fileReplacements
很像 ...build.configuration.<configName>.fileReplacements
但不是用普通的每个环境文件替换你的环境文件,你可以使用不同的环境文件,它对 api 端点等有单独的配置
这简化了需要访问端点的代码,我认为它不会泄漏端点本身,因为在 SPA 中应该没有数据痕迹或在页面呈现期间泄漏,但是我还没有完全确认这一点