gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 02:26:58 27 4
gpt4 key购买 nike

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com