我有一个简单的Angular 网站,显示各种产品,从数据库返回的简单列表,最初只是基于英国,但现在另一个应在法国推出,所以我有两个API一个uk.域和一个fr.域.

我想使用相同的前端,而不是部署两个独立的前端,switch 只更改加载到其中两个页面上的产品.

与此一起,我还有包含必要终结点的环境.dev.ts和环境.prod.ts文件.

理想情况下,我会有一个按钮,一旦部署完成,就可以在区域之间切换.

这是可能的还是糟糕的做法?如果是这样的话,最佳解决方案是什么?

推荐答案

如果两个API的数据模型相同,则只需在UI中进行简单的切换即可.稍后,有多种方法可以获取用户的位置,这样您就可以自动猜测正确的API.例如:geolocator api

切换终端的示例:

export const environment = {
  production: true,
  apiEndpoints: {
    uk: 'https://uk.domain/api',
    fr: 'https://fr.domain/api'
  }
};

export class ProductService {
  constructor(private http: HttpClient) {}

  getProducts(region: 'uk' | 'fr') {
    const apiEndpoint = environment.apiEndpoints[region];
    return this.http.get(`${apiEndpoint}/products`);
  }
}

Angular相关问答推荐

Angular - MSAL用户缺少角色

FormArray包含嵌套的FormGroups.如何访问嵌套的表单组控件?

PrimeNG侧栏清除primeNG消息.为什么?

当项目具有BrowserAnimationsModule时,Angular UI未拾取数据模型更改

如何包装NGB carousel ?

笔刷Angular 为17

带独立零部件的TranslateLoader[Angular 16]

所有返回缺少权限或权限不足的FireBase项目.

Router.navigate() 在功能拦截器内不起作用

Angular MSAL - 对 Bearer 令牌和 AUD 属性的怀疑

导入 AngularFirestoreModule 时出现问题:此类型参数可能需要 `extends firebase.firestore.DocumentData` 约束.

Storybook 和 Angular 交互游戏测试未定义预期

如何访问父组件中提供的 TemplateRef 内的服务?

在 Angular 14 中找不到命名空间google

包含与 ngFor 相关内容的 HTML 输入

如何使用指令以Angular 传递默认值

Angular keypress 存储空间而不是第一个字母

Angular combinelatest使用没有初始值的主题

Angular 2:formGroup 需要一个 FormGroup 实例

包 '@angular/cli' 不是依赖项