angular - ngrx/data 是否提供了一种方法来为我的 DefaultDataService 定义自定义基本 API 路径,然后引用该路径?

标签 angular angular13 ngrx-entity angular-ngrx-data

我将 Angular 13 与 NgRx/数据和实体 (v 13) 结合使用。我定义了以下数据服务,我希望在其中覆盖用于检索实体的 URL ...

export class MyObjectService extends DefaultDataService<MyObject> {
    ...  
    getAll(): Observable<FinanceCustomer[]> {
        return this.http.get('http://localhost:8085/myapi/myobjects').pipe(
          map((response: any) => {
            ...
            return data;
          })
        );
      }

这一切都很好,但我很好奇我是否可以稍微清理一下。如果我重写另一种方法,我宁愿不对基本 URL“http://localhost:8081/myapi/”进行两次硬编码(一次在 getAll() 中,一次在其他方法中). NgRx/data 是否允许我在某个地方为服务定义自定义基本 URL,然后我可以在我覆盖的后续服务调用中引用它?

最佳答案

我喜欢建议这种方法,

环境.ts

export const environment = {
  production: false
  url: http://localhost:8081/myapi/
};

environment.prod.ts

export const environment = {
  production: true
  url: https://api-name.com/myapi/
};

用法: 您可以轻松地将 environment 导入每个服务,或者您可以通过结合 Interceptor

使其更先进

*.service.ts

getAll(): Observable<FinanceCustomer[]> {
    return this.http.get(environment.url + 'myobjects').pipe(
      map((response: any) => {
        ...
        return data;
      })
    );
}

*.interceptor.ts

export class APIInterceptor implements HttpInterceptor {
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    const newReq = req.clone({ url: `${environment.url}/${req.url}` });
    return next.handle(newReq);
  }
}

关于angular - ngrx/data 是否提供了一种方法来为我的 DefaultDataService 定义自定义基本 API 路径,然后引用该路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73448826/

相关文章:

angular - 将可观察量与逻辑 AND 运算符结合起来

javascript - ionic 2 : Use ng2-translate in a ts file

typescript - 替换集合中实体的最简洁方法

Angular 2重新加载routerLink用户再次点击

angular - 如何获取导致 Angular 5 错误的组件名称

jestjs - 在 angular13 中运行 jest : Unexpected value 'TranslateModule' imported by the module 'DynamicTestModule' . 请添加 @NgModule 注解

angular-cli - Angular 13 baseHref 不再有效

angular - 尽管 DELETE 出错,实体仍从缓存中移除

ngrx - 如果我收到的内容类型是 JSON-LD + Hydra,我应该使用 ngrx-data 吗?