【问题标题】:How to build an HttpInterceptor Service in Angular Dart?如何在 Angular Dart 中构建 HttpInterceptor 服务?
【发布时间】:2019-09-27 14:25:55
【问题描述】:

我正在尝试将 Angular 2 应用程序的代码移植到 Angular Dart,以便我可以重用 Flutter 中的业务逻辑。 我的应用使用 HttpInterceptors 进行错误处理和服务器授权。

在打字稿中我会注入一个简单的服务:

@Injectable({
  providedIn: 'root'
})
export class InterceptorService implements HttpInterceptor {
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return;
  }
  constructor(private auth: AuthService) { }
   intercept(
     req: HttpRequest<any>,
     next: HttpHandler
   ): Observable<HttpEvent<any>> {}
}

但 Dart API 似乎没有 HttpInterceptor 类。是否必须扩展 HttpClient 类才能这样做?

我看过this S.O question,但它可以追溯到 5 年前,在此期间,这样做的方式可能已经发生了很大变化。

【问题讨论】:

    标签: dart angular-dart


    【解决方案1】:

    原来有几种方法可以在 Angular Dart / Flutter 中实现。

    一些建立在 dart http 之上的第三方库为 Http 拦截提供了方便的方法(DIOHttp Interceptor)。但是,两者都在客户端级别处理拦截。

    我决定使用 Dart Http 库,使用 the recommended method

    class UserAgentClient extends http.BaseClient {
      final String userAgent;
      final http.Client _inner;
    
      UserAgentClient(this.userAgent, this._inner);
    
      Future<StreamedResponse> send(BaseRequest request) {
        request.headers['user-agent'] = userAgent;
        return _inner.send(request);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 2019-10-16
      • 2018-07-12
      • 2019-03-06
      • 1970-01-01
      • 2019-02-16
      • 1970-01-01
      相关资源
      最近更新 更多