2013-06-26 3 views
1

Я довольно новичок в узле и express.js, и я новичок в концепции приложений REST. Я хочу закодировать типичное приложение CRUD, какой-то дневник. Следовательно, у меня есть набор записей, можно просматривать одну запись и добавлять, редактировать и удалять запись. Я еще не совсем понял, как URi должны быть настроены для представления API соответствия REST. Я бы создал что-то подобное в моем app.js:Express.js: Является ли это интерфейсом RESTful?

// GET REQUEST ROUTING 
app.get('/', diary_router.home); 
app.get('/entries/', diary_router.listEntries); 
app.get('/entries/:id', diary_router.getSingleEntry); 

// POST REQUEST ROUTING 
app.post('/entries/', diary_router.addEntry); 

// PUT REQUEST ROUTING 
app.put('/entries/', diary_router.updateEntry); 

// DELETE REQUEST ROUTING 
app.delete('/entries/', diary_router.deleteEntry); 

Может ли это называться интерфейсом соответствия REST? Должен ли я достаточно добавить соответствующее действие в маршрутах, таких, как это и делает элемент-ID должен быть показан в URL для PUT и DELETE действия тоже ?:

// GET REQUEST ROUTING 
app.get('/', diary_router.home); 
app.get('/entries/', diary_router.listEntries); 
app.get('/entries/show/:id', diary_router.getSingleEntry); 

// POST REQUEST ROUTING 
app.post('/entries/add/', diary_router.addEntry); 

// PUT REQUEST ROUTING 
app.put('/entries/update/:id', diary_router.updateEntry); 

// DELETE REQUEST ROUTING 
app.delete('/entries/delete/:id', diary_router.deleteEntry); 

Что было бы наилучшей практики здесь? Буду признателен за любую оказанную помощь. B.

ответ

3

В свободном определении REST, с которым мы, похоже, сходились на веб-сайте, первый вариант, по-видимому, лучше всего подходит.

Редактировать: и да, вы должны указать ID в маршрутах PUT и DELETE.

HTTP - это действительно классный протокол для применения глаголов (методов запроса) к существительным (URL-адресам). В этом духе, вероятно, лучше всего использовать метод запроса, чтобы отличить то, что вы хотите сделать, к ресурсу, который вы запрашиваете.

Примечание: вы можете использовать промежуточное ПО methodOverride в экспресс, если вы беспокоитесь о том, что браузеры не могут использовать произвольные методы HTTP.

Путь промежуточное methodOverride работы является то, что вы используете <input type="hidden" name="_method" value="PUT"> или аналогичный указать метод, несмотря на то, чтобы только быть регулярным POST запрос, а methodOverride промежуточного слоя установит method свойство по требованию, что вы получите в вашей экспресс-заявка. Таким образом, вы можете сигнализировать предполагаемый метод запроса, если клиент не должен поддерживать этот метод.

+0

Hi deoxxa, Спасибо за ваш ответ. Насколько мне известно, метод methodOverride по умолчанию устанавливается в express. Следующий вопрос: Как я могу создать запрос PUT? Могу ли я использовать его как атрибут '

' для элемента формы? – Bunjip

+1

Это зависит от браузера - я не уверен, какие из них поддерживают подобные HTTP-методы. Способ, которым работает middleware methodOverride, заключается в том, что вы используете '' или похожи, чтобы указать метод, несмотря на то, что он просто является регулярным запросом POST, и средство middleware методаOverride установит свойство 'method' в запросе, который вы получите в своем экспресс-приложении. – deoxxa

+1

Этот подробный комментарий, вероятно, должен быть поправкой на ваш оригинальный ответ! +1 в противном случае, отличный ответ. Будет читать снова! A ++ – naomik