Я уже несколько дней стучаю головой об этом вопросе. Здесь даже были заданы два вопроса о конкретных пакетах (iron-router, Restivus), но я не добился успеха.Как создать приложение RESTful MeteorJS
Мое дело в том, что у меня есть приложение Meteor JS, которое должно получать HTTP-запросы HTTP, чтобы вставить запись в базу данных MongoDB, но мне не удалось пройти связь между MeteorJS и остальным миром.
Я пробовал железный маршрутизатор, Restivus, и несколько часов назад, Picker. Я следил за примерами REST API в Meteorpedia, не превалируя.
Используя 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;
}
}
});
}
И Picker, я получил это:
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 вызов. Я всегда получаю то, что кажется HTML-кодом пустого шаблона с полным <head>
, но пустым <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, который отделяет все на клиенте и все на сервере, но это не имеет никакого значения. Я попытаюсь продолжить обновление в качестве продолжения тестирования.
Спасибо заранее!
Примечание: Я попытался использовать методы GET и POST, используя curl, небольшой скрипт Ruby, который я создал, и REST Console. Результат был одинаковым во всех трех случаях.
Вы проверили https://github.com/stubailo/meteor-rest/? – Delgermurun
Я видел это, но я не пробовал. Честно говоря, я немного смущен тем, как это работает, и не смог найти рабочий пример. –
Я оставил здесь комментарий, объяснив, что случилось с реализацией Restivus: http://stackoverflow.com/questions/30581774/configuring-restivus-post-method-for-meteor. Извините, что у вас было так много проблем с установкой REST API в Meteor. Что вы в конечном счете использовали? – kahmali