我将 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/