Angular 4如何为整个应用程序设置HttpClient的默认选项?

时间:2017-08-17 18:13:25

标签: angular

我想为整个Angular 4应用程序使用相同的请求选项。特别是我想传递withCredentials: environment.xhrWithCredentials请求(基于当前环境)。

但我不认为为每个请求设置选项是个好主意:

this.http.get('/api', {withCredentials: environment.xhrWithCredentials})

有没有办法为整个应用设置一次HttpClient的默认选项?

2 个答案:

答案 0 :(得分:5)

我还没有使用它,但基于https://angular.io/guide/http,您需要拦截所有请求并在那里设置基本属性。

@Injectable()
export class AuthInterceptor implements HttpInterceptor {
    constructor() {}

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        const authReq = req.clone({withCredentials: true /*environment.xhrWithCredentials*/});

        return next.handle(authReq);
    }
}

答案 1 :(得分:0)

您可能想要使用全球服务“ApiService”

public getApi(endpoint:string):Observable<any> {
    return this.http.get('/api/'+endpoint, {withCredentials: environment.xhrWithCredentials});
}

然后注入此ApiService而不是Http,并使用您想要的端点调用getApi()。