MeteorJS 调用 rest api 服务器端

MeteorJS call rest api server side

现在我调用休息 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('/');
      }
    }
  }
})

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

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

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

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

您可以在此页面找到有关 Meteor 指南中方法的更多信息 https://guide.meteor.com/methods.html