Получить код статуса HTTP с MeteorJS
Вы знаете, могу ли я получить код состояния HTTP с MeteorJS (или напрямую с NodeJS)? Я прочитал документацию по HTTP Api, но безрезультатно:(
Для настройки моих маршрутов я использую Iron Router.
Я хотел бы получить код статуса моей страницы для добавления prerender balise:
<meta name="prerender-status-code" content="404">
Я использую MeteorJS на последней версии:)
Спасибо, сообщество!
3 ответа
Вы можете попробовать использовать:Iron.Location.get().path;
Чтобы получить текущую ссылку. И используйте решение Андре, чтобы найти код состояния.
Чтобы сообщить заранее, что ваша страница или данные не были найдены, вы должны добавить следующий код в заголовок страницы.
<meta name="prerender-status-code" content="404">
Я использую для этого https://github.com/kadirahq/meteor-dochead.
Router.route('my-route', {
path: ['/my-route/:param1'],
waitOn: function () {
return [
Meteor.subscribe('myCollection', this.params.param1)
];
},
data: function () {
var data = myCollection.findOne({});
if (this.ready() && !data) {
var metaInfo = {name: "prerender-status-code", content: "404"};
DocHead.addMeta(metaInfo);
}
return {
routerData: {
data: data
}
}
}
});
Вы также можете установить его в шаблоне PageNotFound по умолчанию:
Template.PageNotFound.rendered = function() {
var metaInfo = {name: "prerender-status-code", content: "404"};
DocHead.addMeta(metaInfo);
});
Из документов обратный вызов, переданный в HTTP.call, будет вызываться с 2 параметрами: ошибка, результат. Результатом является объект со свойством statusCode, которое является числом, если запрос выполнен успешно, пустым при ошибке.
При запуске в асинхронном режиме обратный вызов получает два аргумента, error и result. Аргумент error будет содержать Error, если запрос каким-либо образом завершится неудачно, включая сетевую ошибку, тайм-аут или код состояния HTTP в диапазоне 400 или 500. В случае кода состояния HTTP 4xx/5xx свойство response on error соответствует содержимому объекта результата. При запуске в синхронном режиме либо результат возвращается из функции, либо выдается ошибка.
Содержимое объекта результата:
Номер StatusCode
Числовой код состояния HTTP-результата или ноль при ошибке.
Пример кода из документов:
HTTP.call('POST', 'http://api.twitter.com/xyz', {
data: { some: 'json', stuff: 1 }
}, () => (error, result) {
if (!error) {
console.log(result.statusCode);
}
});