如何使用拦截器添加api_key

时间:2019-01-04 20:46:05

标签: angular

我知道我可以在不使用拦截器的情况下做下一件事,但是我试图弄清楚在每个httpRequest上添加了额外的参数。我一直在阅读(https://github.com/angular/angular/issues/18812)这个问题,它复制了参数。我尝试了提供的解决方法,但是它不起作用。

前段时间,我看到了一种简单的方式来做类似 const newReq = req.url +'api_key'的事情(请不要直译,它不能那样工作),但是我可以。记得。任何人都可以让我知道如何获得预期的行为吗?

预期的行为-> https://api.xxx.com/xxx&api_key='api_key'

当前行为-> https://api.xxx.com/xxx&api_key=undefined&api_key=“无论如何”

@Injectable()
export class ApiKeyInterceptorService implements HttpInterceptor {

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

   let newParams = new HttpParams({fromString: req.params.toString()});
   newParams = newParams.append('api_key', '123123123asdasdasd');

   const requestClone = req.clone({
     params: newParams
   });
   return next.handle(requestClone);
   }

  }

1 个答案:

答案 0 :(得分:0)

设置应该可以解决问题:

newParams = newParams.set('api_key', '123123123asdasdasd');