2017-07-03 1 views
0

Maintenant j'appelle API reste avec:MeteorJS appeler repos côté serveur api

Template.accedi.events({ 
    'submit #form-login'(e) { 
    e.preventDefault(); 
    var data = { 
     'username': $("[name=login_username]").val(), 
     'password': $("[name=login_password]").val() 
    }; 
    var url = api_url + "/Token"; 

    HTTP.call('POST', url, { 
     params: { 
     'grant_type': 'password', 
     'username': data.username, 
     'password': data.password 
     } 
    }, (error, result) => { 
     if (!error) { 
     Session.set('userData', JSON.stringify(result.data)); 
     localStorage.setItem('userData', JSON.stringify(result.data)) 
     Router.go('/'); 
     } 
    } 
    } 
}) 

Ce repos d'appel côté client api. Je dois appeler le côté serveur api ... il y a une méthode?

+0

Je ne sais pas ce que vous construisez, mais si vous voulez authentifier l'utilisateur, il y a des paquets créés pour cela. Consultez la section des comptes dans le guide officiel Meteor https://guide.meteor.com/accounts.html – mparkitny

+0

J'ai un serveur API externe. Je dois appeler l'authentification par jeton support avec ce serveur, stocker le jeton et après utilisation ce jeton pour toutes les demandes –

Répondre

1

Vous devez créer une méthode appelée à partir de votre code client. Quelque chose comme ci-dessous devrait fonctionner dans votre cas.

Les méthodes doivent être définies dans le code qui est chargé sur le client et le serveur.

Meteor.methods({ 
    'login.token'({ username, password }) { 
    try { 
     let request = HTTP.call('POST', 'https://example.com', { 
     params: { 
      'grant_type': 'password', 
      'username': username, 
      'password': password 
     } 
     }) 

     // You might want to process, validate etc. request response before return it to the client. 
     return request 
    } catch (err) { 
     throw new Meteor.Error(500, 'There was an error processing your request') 
    } 
    } 
}) 

Votre code client peut semble similaire à ce

Template.accedi.events({ 
    'submit #form-login'(e) { 
    e.preventDefault(); 
    var data = { 
     'username': $("[name=login_username]").val(), 
     'password': $("[name=login_password]").val() 
    }; 

    Meteor.call('login.token', { 
     username: data.username, 
     password: data.password 
    }, (err, res) => { 
     if (err) { 
     console.log(err) 
     } else { 
     Session.set('userData', JSON.stringify(res.data)); 
     localStorage.setItem('userData', JSON.stringify(res.data)) 
     Router.go('/'); 
     } 
    }) 
    } 
}) 

Vous pouvez trouver plus sur les méthodes dans le guide Meteor à cette page https://guide.meteor.com/methods.html