2013-11-07 2 views
3

Я читал много в последнее время и еще больше экспериментировал с веб-разработкой. Есть некоторые вещи, которые я просто не могу понять, поэтому любая помощь приветствуется.Внедрение RESTfull и общая информатизация

Я не пытаюсь сделать свою домашнюю работу для меня. У меня есть некоторые ясности в моих знаниях, которые я хочу заполнить. Пожалуйста, помогите мне с вашими взглядами :)

REST вопросы: Чтение документации это вполне понятно (Node.js/Express) Пример:

Пример ONE (получить):

app.get('/', function(req, res) { 
    res.send('please select a collection, e.g., /collections/messages') 
}) 

Мое объяснение: Когда корень сервера хит, отправить Thie следующее сообщение

Пример TWO (получить):

app.get('/collections/:collectionName/:id', function(req, res) { 
    req.collection.findOne({name: req.collection.id(req.params.id)}, 
     function(e, result){ 
     if (e) return next(e) 
     res.send(result) 
    }) 
}) 

Мое объяснение: когда URL-адрес попадает, введите идентификатор из URL-адреса (который находится в params.id) и выполните поиск по нему (это MongoDB).

Пример ТРЕТИЙ (пост):

app.post('/collections/:collectionName', function(req, res) { 
    req.collection.insert(req.body, {}, function(e, results){ 
     if (e) return next(e) 
     res.send(results) 
    }) 
}) 

Мое объяснение: Когда URL хит, возьмите полезный груз (JSON в данном случае), который находится в req.body, и вставьте его в новый документ ,

Вопросы:

  1. ли пример один и два как RESTfull?

  2. Я теперь полностью смущен параметрами. Я понимаю, что POST передается в rew.body ... что такое params.id? Включает ли он URL-переменные, например: ID?

  3. Мои объяснения ... они правильные?

  4. Пример три также ОТДЫХ, независимо от того, что используется POST?

  5. Пример три: '/ collections /: collectionName. Почему ': collectionName' передается по URL-адресу, я мог бы поместить его в req.body в качестве параметра (вместе с новыми данными) и взять его оттуда? Какая польза от этого?

Спасибо

ответ

2
  1. АНИ необходимо использовать HATEOAS быть RESTful. В первом примере, если / является точкой входа вашего API, ответ должен содержать ссылки для доступных коллекций, а не такую ​​удобочитаемую строку. Это определенно не RESTful.

  2. Точно.

  3. Все в порядке, за исключением того, что в третьем примере ничего нет, подразумевая, что это тело JSON. Он должен проверить заголовок Content-Type, отправленный клиентом.

  4. REST не зависит от HTTP. Пока вы используете методы HTTP, поскольку они стандартизированы, все в порядке. POST - это метод, используемый для любого действия, которое не стандартизировано, поэтому использовать POST для чего угодно, если нет конкретного метода. Например, неправильно использовать POST для извлечения, но использовать его для создания нового ресурса можно, если у вас нет полного представления.

  5. POST означает, что тело данных подчинено ресурсу в целевом URI. Если collectionName были в корпусе POST, это означало бы, что вы были POSTING до /collections, что имело бы смысл создавать новую коллекцию, а не новый элемент коллекции.

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