2014-02-11 6 views
8

У меня есть маршрут Iron-router, с которым я бы хотел получить данные lat/lng через HTTP POST-запрос.Как получить доступ к данным HTTP POST от метеора?

Это моя попытка:

Router.map(function() { 
    this.route('serverFile', { 
    path: '/receive/', 
    where: 'server', 

    action: function() { 
     var filename = this.params.filename; 
     resp = {'lat' : this.params.lat, 
       'lon' : this.params.lon}; 
     this.response.writeHead(200, {'Content-Type': 'application/json; charset=utf-8'}); 
     this.response.end(JSON.stringify(resp)); 
    } 
    }); 
}); 

Но запрашивая сервер с:

curl --data "lat=12&lon=14" http://127.0.0.1:3000/receive 

Возвращает {}.

Может быть params не содержит данных должника? Я попытался проверить объект и запрос, но я не могу его найти.

ответ

14

connect framework Внутри железного маршрутизатора используется промежуточное программное обеспечение bodyParser для анализа данных, отправленных в корпус. BodyParser делает эти данные доступными в объекте request.body.

следующие работы для меня:

Router.map(function() { 
    this.route('serverFile', { 
    path: '/receive/', 
    where: 'server', 

    action: function() { 
     var filename = this.params.filename; 
     resp = {'lat' : this.request.body.lat, 
       'lon' : this.request.body.lon}; 
     this.response.writeHead(200, {'Content-Type': 
            'application/json; charset=utf-8'}); 
     this.response.end(JSON.stringify(resp)); 
    } 
    }); 
}); 

Это дает мне:

> curl --data "lat=12&lon=14" http://127.0.0.1:3000/receive 
{"lat":"12","lon":"14"} 

Также смотрите здесь: http://www.senchalabs.org/connect/bodyParser.html

+0

** request.body ** это то, что я искал .. Благодаря! – gozzilli

Смежные вопросы