我们考虑过将现有的Angluar Web应用打包到一个电子项目中,以使其离线运行。 到目前为止,该Web应用程序通过REST请求加载配置。在电子应用程序中,此信息应位于本地文件中。
任何建议如何有效地做到这一点?
我的第一个想法,是在电子中的 express 服务器中嘲笑后端似乎并不常见。 但是对我来说,以角度重定向所有REST请求似乎也不是很明智。
答案 0 :(得分:0)
所以我要做的是创建一个Http扩展类,并根据您通过http请求发送的参数更新端点。
Http Extender:
export function HttpAuthCreator(http: HttpClient) {
return new HttpAuth(http)
}
@Injectable()
export class HttpAuth {
// Extending the HttpClient through the Angular DI.
public constructor(public http: HttpClient) {
// If you don't want to use the extended versions in some cases you can access
the public property and use the original one.
// for ex. this.httpClient.http.get(...)
}
/**
* GET request
* @param string endPoint it doesn't need / in front of the end point
* @param IRequestOptions options options of the request like headers, body, etc.
* @returns Observable<T>
*/
public get<T>(endPoint: string, destination?: string, options?: IRequestOptions): Observable<T> {
return this.http.get<T>(
this.updateEndpoint(endPoint, destination),
this.configRequestOptions(options, destination)
)
}
然后您的子例程来更新端点
private updateEndpoint(endpoint: string, destination?: string) {
if (destination === 'local') {
return `${environment.localAPI}${endpoint}`
} else {
return `${environment.onlineAPI}${endpoint}`
}
}
这样,您可以动态处理端点位置
get() {
return this.http.get(`/organizations/${params.id}`, 'local').toPromise()
}