Partage
  • Partager sur Facebook
  • Partager sur Twitter

Angular + API node => problème de reqûete http

je n'arrive pas a réaliser correctement ma reqûete post

Sujet résolu
    13 août 2019 à 15:01:55

    Bonjour à tous je développe une application web en angular avec en backend du node js pour l'accès aux données.

    J'arrive à tester correctement mes api via curl ex

    curl -v -X POST --data '{"login":"cl","pwd":"cl"}' --header "Content-Type: application/json" https://@api:8443/autenticate

    J'arrive à obtenir la réponse attendue c'est à dire récupérer toutes les informations de l'utilisateur ainsi qu'un token.

    la méthode de l'api est la suivante :

    exports.authenticate = function (req, res) {
            var new_user = new User(req.body);
            if (!new_user.login || !new_user.pwd){
                    res.status(400).send({ error: true, message: 'Please provide all informations!' });
            } else {
            User.authenticate (new_user,function (err, user) {
                    console.log('controller');
                    if (err) {
                            res.status(500).send(err);
                    }else {
                    console.log(user[0].id);
                    var token = jwt.sign({id: user[0].id}, config.secret, { expiresIn: 3600 });
                    res.status(200).send({ user: user, auth: true, token : token }); }
            }); }
    }

    User.authenticate va appeler ma requête sql:

     sql.query("SELECT * FROM user WHERE login = ?", [user.login], function(err, res){
                    if (err){
                            return res.status(500).send('Error  on the server ' , err);
                            //console.log("error select: ", err);
                    }else{ if (!res) {
                            return res.status(404).send('No user found');
                    }else {
    
    
                            //sql.query("UPDATE user SET pwd = ? WHERE id = ?", [crypto.createHash('sha256').update(user.
                            sql.query("SELECT * FROM user WHERE pwd = ?" , [crypto.createHash('sha256').update(user.pwd+r
                                    if(err){
                                            console.log("error: ", err);
                                            result(null, err);
                                    }
                                    else {
    
    
                                            result(null, res2);
                                    }
                            });
                    }
             } });



    Côté Angular j'ai mon service :

     login(loguser: User) {
            return this.http.post<any>(`${environment.apiUrl}/authenticate`,
                    { loguser }, { headers: new HttpHeaders().set('Content-Type', 'application/json')})
    
                            .pipe(map(user => {
                                    // store user details and jwt token in local storage to keep user logged in between p
                                    localStorage.setItem('currentUser', JSON.stringify(user));
                                    this.currentUserSubject.next(user);
                                    return user;
                    }));
            }

    et son appel dans le composant login:

     onSubmit() {
                    this.submitted = true;
                    // stop here if form is invalid
                    if (this.loginForm.invalid) {
                            return;
                    }
    
                    this.loading = true;
                    this.user.login = this.f.username.value;
                    this.user.pwd = this.f.password.value;
                    console.log(this.user);
                    this.authenticationService.login(this.user)
                            .pipe(first())
                            .subscribe(
                                    data => {
                                            this.router.navigate([this.returnUrl]);
                                    },
                                    error => {
                                            this.error = error;
                                            this.loading = false;
                                    });
            }

    this.user est un objet de type User que je défini au début du composant;

    dans le onSubmit(), console.log(this.user) m'affiche {login: "cl", pwd: "cl"}

    j'obitent l'erreur 400 avec le message Please provide all informations!


    Je ne comprend pas pourquoi la condition de ma fonction authenticate s'avère true

    (!new_user.login || !new_user.pwd).

    Je vous remercie d'avance pour l'attention que vous porterez à ma requête.

    Je reste également à votre disposition pour toute information complémentaire

    ****

    J'ai résolu mon problème il fallait mettre loguser et non {loguser} dans la fonction du service.

    Merci Stackoverflow




    -
    Edité par Claudeemmm 13 août 2019 à 17:26:00

    • Partager sur Facebook
    • Partager sur Twitter

    Angular + API node => problème de reqûete http

    × 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