app.route ()
Согласно документации, метод app.route
:
Возвращает экземпляр одного маршрута, который затем можно использовать для обработки глаголов HTTP с помощью дополнительного промежуточного программного обеспечения. Используйте app.route (), чтобы избежать дублирования имен маршрутов (и, следовательно, ошибок опечаток).
Это означает, что app.route()
берет только путь и возвращает route object
. Который будет иметь все методы глагола http для обработки промежуточного программного обеспечения по одному пути, get
, post
, delete
, post
, put
, patch
и т. Д.
Почему?
Чтобы просто иметь маршруты, которые имеют одинаковый путь, но разные HTTP-запросы. Нравится:
app.route('/books')
.get() // To get the list of objects
.post() // To save a new book.
Индивидуальные методы HTTP
С другой стороны, express предоставляет отдельные методы на app
для обработки HTTP-запросов. Как app.get()
, app.post()
, app.delete()
.
Согласно документации для пост-маршрута: HTTP POST-запросы к указанному пути с указанными функциями обратного вызова.
Почему?
Для случаев, когда у вас нет одного пути для нескольких HTTP-запросов. Допустим,
app.delete('/books/:bookId/comments/:commentId', function(){});
Вышеуказанный маршрут является своего рода отдельным маршрутом и используется только для удаления определенного комментария в книге.
Надеюсь, мне удалось устранить разницу.
Ссылка на ссылку для документов: https://expressjs.com/en/4x/api.html#router.route
Edit:
Поскольку нет подходящих документов, доступны методы перечисления, предоставляемые объектом маршрута:
Для получения дополнительной информации добавьте ссылку github на экспресс-маршрутизатор.
https://github.com/expressjs/express/blob/master/lib/router/route.js
Здесь приведен код маршрутизатора Express, который добавляет обработчик для всех методов.
methods.forEach(function(method){
Route.prototype[method] = function(){
var handles = flatten(slice.call(arguments));
for (var i = 0; i < handles.length; i++) {
var handle = handles[i];
if (typeof handle !== 'function') {
var type = toString.call(handle);
var msg = 'Route.' + method + '() requires a callback function but got a ' + type
throw new Error(msg);
}
debug('%s %o', method, this.path)
var layer = Layer('/', {}, handle);
layer.method = method;
this.methods[method] = true;
this.stack.push(layer);
}
return this;
};
});
В этом файле сверху:
var methods = require('methods');
методы: https://github.com/jshttp/methods
Таким образом, обязательные параметры для связанных методов - unlimited functions
как запрос handlers/middlewares
.