2015-06-01 20 views
0

我一直对这个问题猛撞我的头,现在有一天。即使在这里发布了两个关于特定软件包的问题(iron-routerRestivus),但我还没有成功。我的情况是这样的:我有一个Meteor JS应用程序,它必须接收http POST调用来在它的MongoDB数据库中插入一条记录,但是我一直无法通过MeteorJS和世界其他地方之间的连接。如何创建一个REST风格的MeteorJS应用程序

我已经尝试过铁路由器,Restivus,并且在几个小时前,Picker。我遵循Meteorpedia上的REST API例子,没有任何优点。

使用Restivus,我得到了下面的代码:

if(Meteor.isServer){ 

    //Must exist, but all options can be empty 
    Restivus.configure({ 
    }); 

    //Allow Restivus to manage Reports 
    Restivus.addCollection('reports', { 
     routeOptions: {}, 
    }); 

    console.log("Inside 'isServer'"); 

    Restivus.addRoute('reports/:message', { 

     // POST 
     post: { 
      action: function(){ 

       console.log("Got to post!"); 

       var response = null; 
       var message = this.urlParams.message; 

       if(message){ 
        console.log("Message received: " + message); 
        return {status: "success", data: message}; 
       } else { 
        console.log("Message empty..."); 
        return {status: "fail", message: "Post not found"}; 
       } 

       //Response to caller 
       return; 
      } 
     } 
    }); 
} 

而且随着选择器,我得到这个:

if(Meteor.isServer){ 

    Picker.route('/newReport/:message'), function(params, req, res, rext){ 

     if(req.method == "POST") 
      console.log("Got a POST"); 
     else 
      console.log("Not a POST"); 

     res.end("Returned"); 
    } 
} 

在这两个尝试,我一个GET呼叫时得到相同的结果。我总是得到什么似乎是完整的<head>空的模板的HTML代码,但空的<body>标签。当我尝试GET和POST方法到webapp中的任何路径时,我会得到相同的结果。

由于错误是在这两种情况下是相同的,我在我的路由的一个点假设:我将我的错误,所以在这里遵循的server/router.js休息:

Router.configure({ 
    layoutTemplate: 'layout', 
    notFoundTemplate: 'notFound', 
    waitOn: function(){ 
     return [Meteor.subscribe('reports')] 
    } 
}); 

//Page of the report 
Router.route('/report/:message', { 
    name: 'reportPage', 
    data: function(){ 
     return Reports.findOne(this.params.message); 
    } 
}) 

Router.route('/', { 
    name: 'reportList' 
}); 

<<REST code goes here>> 

我怀疑,在一个点路由器正在发送一个空白页面,但我在路由器信息中看不到任何暗示的内容。

我甚至试图做一个if/else语句来区分客户端和服务器中的所有内容,但它没有区别。我会尽量保持更新为继续测试。

预先感谢您!

注意:我使用curl,我做的小Ruby脚本和REST控制台尝试了GET和POST方法。结果在所有3个实例中都是相同的。

+0

您是否检查了https://github.com/stubailo/meteor-rest/? – Delgermurun

+0

我见过它,但我没有尝试过。老实说,我对它的工作原理有些困惑,并且找不到它的一个工作示例。 –

+0

我在这里留下评论,解释你的Restivus实现有什么问题:http://stackoverflow.com/questions/30581774/configuring-restivus-post-method-for-meteor。对不起,您在Meteor获得您的REST API设置时遇到了很多困难。你最终使用了什么? – kahmali

回答

0

使用Iron-Router的服务器端路由怎么样?

Router 
.route('/api/path', {where: 'server'}) 
.post(function() 
{ 
    var req = this.request.body; 
}); 
相关问题