Partage
  • Partager sur Facebook
  • Partager sur Twitter

Angular HTTPClient modifier une réponse

    14 février 2019 à 10:32:51

    Bonjour,

    J'ai un petit problème sur une application angular et j'aurai besoin de l'aide de quelqu'un qui s'y connaît mieux que moi ^^'

    J'ai un service que j'utilise pour faire mes appels a une api et j'aimerai que dans ces appels, si une erreur d'authentification est détectée alors je tente de ré authentifier l'utilisateur avec un refresh token, et si ça réussi alors je relance la requête d'origine et renvoi ce nouveau résultat au lieu de l'erreur initiale.

    Par exemple voici ma fonction get :

    protected get<T>(path: string, params: any, mapper: Function): Observable<T> {
        const httpParams: HttpParams = new HttpParams({ fromObject: params});
        let urlParams = httpParams.toString();
        if (urlParams) {
          urlParams = urlParams.replace(/%5B%5D/g, '[]');
        }
    
        const get =  this._http.get<T>((path.indexOf('data') === 0 ? '' : this._webservicesUrl)
          + this.mapParameters(path, params) + '?' + urlParams, {
          headers: this.headers,
          responseType: 'json',
          withCredentials: true,
          observe: 'response'
        });
    
        return get.pipe(
          tap((res) => console.log('HTTP GET - ' + path)),
          map((response: HttpResponse<T>) => mapper(response.body)),
          catchError(this.authError(path, params, mapper)),
        );
    }


    Je n'ai pas encore fait complètement le this.authError (dedans j'ai juste ma logique pour la ré authentification) car je ne sais vraiment pas comment procéder.

    J'aurai seulement besoin d'indication sur comment procéder pour que lorsque je passe dans mon catchError je puisse par la suite modifier la réponse (qui est dans le map => response.body) afin d'envoyer la réponse d'une autre requête qui serai la même mais lancé après l'authentification

    J'ai aussi essayé avec des interceptors mais impossible de trouver le bon moyen, je ne peux que refaire l'authentification et relancer la requête après mais entre temps du côté de mon service qui fais le get ça aurai déjà passé dans le reject de mon subscribe.

    -
    Edité par Jessydan38 14 février 2019 à 10:34:39

    • Partager sur Facebook
    • Partager sur Twitter

    Angular HTTPClient modifier une réponse

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown