Angular4如何为HttpModule设置base_uri?

看了一下别人说的方法 set base url in ng, 感觉好复杂。 这么常见的需求, 应该是有更方便的方式实现吧?

阅读 2.3k
1 个回答

Angular提供一种拦截器的机制,并不那么复杂。例如:

@Injectable()
export class ExampleInterceptor implements HttpInterceptor {
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    const url = 'http://myurl.com';
    req = req.clone({
      url: url + req.url
    });
    return next.handle(req);
  }
}

注册拦截器:

@NgModule({
  providers: [
    { provide: HTTP_INTERCEPTORS, useClass: ExampleInterceptor, multi: true }
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule { }

以上代码就是你提供的网址中,但的确是可行的。因为拦截器,还可以做更多的事,诸如:统一授权处理、错误处理等。

或是参考我的一篇如何在Angular优雅编写HTTP请求ng-alain

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏