Я написал простой api для извлечения записей с помощью GET/tours /: id. Это работает, когда я пишу идентификатор на URL. Пример:/tours/0, но нет, если я напишу в браузере только «/ tours» или туры/«простой узел api restfull, get method по id из массива
Мне пришлось написать еще один блок, чтобы получить полный массив с помощью GET:/toursall или неправильно использовать функцию onlye, чтобы получить все записи и id в одной и той же функции? Я обновил код, который я нашел в книге. Я использую узел 6.7.0 и express ~ 4.0.0
var express = require('express');
var app = express();
app.set('port', process.env.PORT || 3000);
// custom 404 page
var tours = [
{ id: 0, name: 'Hood River', price: 99.99 },
{ id: 1, name: 'Oregon Coast', price: 149.95 },
];
app.get('/toursall', function(req, res) {
res.json(tours);
});
app.get('/tours/:id', function(req, res) {
responsetours = req.params.id !== undefined ?
tours.filter( function(obj) {return obj.id== req.params.id})
: tours;
res.json(responsetours);
});
app.use(function(req, res){
res.type('text/plain');
res.status(404);
res.send('404 - Not Found');
});
// custom 500 page
app.use(function(err, req, res, next){
console.error(err.stack);
res.type('text/plain');
res.status(500);
res.send('500 - Server Error');
});
app.listen(app.get('port'), function(){
console.log('Express started on http://localhost:' +
app.get('port') + '; press Ctrl-C to terminate.');
});
Это хорошая практика, чтобы иметь одну функцию для записей всех и одну запись? – stackdave
Исходя из требования. Если это действительно просто, как у вас, вы можете иметь одну общую функцию. Но если вам нужны дополнительные манипуляции/внешние вызовы, вы можете разделить их на два разных вызова. Infact, если вы извлекаете его из базы данных, например, mongodb, было бы хорошо, если бы у вас были отдельные вызовы для «findOne» и еще один для 'find'. – Aruna