MeteorJS呼叫休息api服务器端

时间:2017-07-03 09:54:39

标签: javascript meteor meteor-blaze

现在我用以下方法调用rest 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('/');
      }
    }
  }
})

此呼叫休息api客户端。 我需要调用api服务器端...有方法吗?

1 个答案:

答案 0 :(得分:1)

您应该创建从客户端代码调用的方法。下面的内容应该适用于您的情况。

必须在客户端和服务器上加载的代码中定义方法。

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')
    }
  }
})

您的客户端代码可能与此类似

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('/');
      }
    })
  }
})

您可以在此页https://guide.meteor.com/methods.html

中找到有关Meteor指南中方法的更多信息