0
votes

Problème dans les paramètres de requête en angulaire 8

J'ai un problème avec les paramètres de requête dans angular 8. Ceci est le code: xxx pré>

i a également essayé p> xxx pré>

et P>

 login(username, password) {

    console.log('login');

    return this.http.post<any>('http://localhost:8080/login?username='+username+'&password='+password, 
        {headers:{
            'Content-Type' : 'application/json',
            'Accept': 'application/json'}} 
    ).pipe(map(data => {

        this.setSession(data);
        this.currentUserSubject.next(data.user);

    }));

}


2 commentaires

Il n'y a pas de variable d'options dans votre premier exemple? On dirait que votre backend prend les valeurs de la chaîne de requête - essayez-vous de définir des valeurs de chaîne de requête via les options?


@Kurthamilton désolé j'ai supprimé du code de l'article, je répare, le code postal est le même de mon code


4 Réponses :


2
votes

Vous postez les options comme corps. Le troisième paramètre du http.post code> doit être les options suivantes:

let params = new HttpParams();
params = params.append('username', username);
params = params.append('password', password);

const options = { headers: this.headers, params: params };

return this.http.post<any>(this.host + 'login', null, options);


3 commentaires

Merci de réponse, je reçois une erreur dans votre suggestion, «Aucune surcharge ne correspond à cet appel. '


@Canerandagio sonne impair, mais vous pouvez essayer de définir le corps sur null


"L'utilisateur" de la propriété n'existe pas sur le type "inconnu'.ts (2339)" se référant à "this.currenttusersubject.next (données.user);"



0
votes

Je l'écrirais comme ceci xxx

Vous devez modifier votre objet d'en-têtes, il n'y a pas besoin de l'emballage httpheader autour de celui-ci xxx

BTW: Si vous n'envoyez pas de corps, réévaluez peut-être le besoin d'une demande de post


5 commentaires

J'ai ajouté les en-têtes


Cela semble un peu confus, j'utiliserais des options comme dans mon code, est-ce possible?


Le dernier paramètre du message est l'objet Options - extrait l'objet Options comme vous avez fait


Je reçois une erreur faisant référence à "Options" dans votre suggestion ", aucune surcharge ne correspond à cet appel. '


Veuillez ajouter comment votre objet d'en-tête a l'air. Je viens de tester cela et ça marche bien.



0
votes

Vous devez utiliser la méthode http.get () au cas où il n'y a pas de corps (c'est-à-dire que vous devez modifier la méthode de requête à partir de l'article pour obtenir sur le backend).

return this.http.post<any>(this.host + 'login', {},options).pipe(map(data => {

        console.table(data);
        this.setSession(data);
        this.currentUserSubject.next(data.user);

    }));


1 commentaires

Merci de réponse, je reçois une erreur dans votre suggestion, «Aucune surcharge ne correspond à cet appel. ' se référant aux options.



0
votes

essayez d'envoyer un objet JS après l'URL. Pour EXAPLE:

let obj = {nom d'utilisateur: "nom d'utilisateur", mot de passe: "mot de passe"};

this.http.post ("" votre URL ici ", obj) .Subscribe (votre flèche ici);

bonne chance!


0 commentaires