В документации по express
модулю NodeJS приведен пример кода app.use(...)
.
Что такое use
функция и где она определена?
В документации по express
модулю NodeJS приведен пример кода app.use(...)
.
Что такое use
функция и где она определена?
Ответы:
Объект приложения создается при создании сервера Express. Он имеет промежуточный стек, который можно настраивать app.configure()
(сейчас это не рекомендуется в версии 4.x) .
Чтобы настроить промежуточное программное обеспечение, вы можете вызывать app.use(<specific_middleware_layer_here>)
каждый слой промежуточного программного обеспечения, который вы хотите добавить (он может быть общим для всех путей или запускаться только на определенных путях, которые обрабатывает ваш сервер), и он будет добавлен в ваш стек промежуточного программного обеспечения Express . Слои промежуточного программного обеспечения могут добавляться один за другим в нескольких вызовах use
или даже все сразу в серии с одним вызовом. Смотрите use
документацию для более подробной информации.
Ниже приведен пример концептуального понимания промежуточного программного обеспечения Express. Вот как выглядит стек промежуточного программного обеспечения моего приложения (app.stack) при регистрации объекта приложения на консоли в виде JSON:
stack:
[ { route: '', handle: [Function] },
{ route: '', handle: [Function: static] },
{ route: '', handle: [Function: bodyParser] },
{ route: '', handle: [Function: cookieParser] },
{ route: '', handle: [Function: session] },
{ route: '', handle: [Function: methodOverride] },
{ route: '', handle: [Function] },
{ route: '', handle: [Function] } ]
Как вы могли бы вывести, я позвонил app.use(express.bodyParser())
и app.use(express.cookieParser())
т. Д., Которые добавили эти экспресс-слои промежуточного программного обеспечения в стек промежуточного программного обеспечения. Обратите внимание, что маршруты пусты, что означает, что когда я добавил эти промежуточные слои, я указал, что они будут запускаться на любом маршруте. Если бы я добавил пользовательский слой промежуточного программного обеспечения, который срабатывал только по пути, /user/:id
который был бы отражен в виде строки в route
поле этого объекта слоя промежуточного программного обеспечения в распечатке стека выше.
Каждый слой по существу добавляет функцию, которая специально обрабатывает что-то в вашем потоке через промежуточное ПО.
Например, добавляя bodyParser
, вы гарантируете, что ваш сервер обрабатывает входящие запросы с помощью промежуточного программного обеспечения Express . Итак, теперь синтаксический анализ тела входящих запросов является частью процедуры, которую ваше промежуточное программное обеспечение выполняет при обработке входящих запросов - все потому, что вы вызвали app.use(bodyParser)
.
next()
обратный вызов, который должен вызывать каждое промежуточное программное обеспечение для передачи обработки следующей функции в конвейере. Система маршрутизации (первый аргумент app.use()
) позволяет конвейеру разветвляться в зависимости от URL
use
метод настройки промежуточного программного обеспечения, используемого маршрутами объекта HTTP-сервера Express. Метод определен как часть Connect, на котором основан Express.
Обновление Начиная с версии 4.x, Express больше не зависит от Connect .
Функции промежуточного программного обеспечения, которые ранее были включены в Express, теперь находятся в отдельных модулях; см. список функций промежуточного программного обеспечения .
app.use(function(){ var object = new SomeConstructor; next(); })
Каждый app.use (промежуточное программное обеспечение) вызывается каждый раз, когда запрос отправляется на сервер.
app.use () используется для монтирования функции промежуточного программного обеспечения или монтирования по указанному пути, функция промежуточного программного обеспечения выполняется, когда совпадает базовый путь.
Например: если вы используете app.use () в indexRouter.js, вот так:
//indexRouter.js
var adsRouter = require('./adsRouter.js');
module.exports = function(app) {
app.use('/ads', adsRouter);
}
В приведенном выше коде app.use () смонтируйте путь в / ads для adsRouter.js.
Сейчас в adsRouter.js
// adsRouter.js
var router = require('express').Router();
var controllerIndex = require('../controller/index');
router.post('/show', controllerIndex.ads.showAd);
module.exports = router;
в adsRouter.js путь будет таким же для ads- '/ ads / show', а затем он будет работать в соответствии с controllerIndex.ads.showAd ().
app.use ([путь], обратный вызов, [обратный вызов]): мы можем добавить обратный вызов на то же самое.
app.use('/test', function(req, res, next) {
// write your callback code here.
});
app.use () выступает в качестве промежуточного программного обеспечения в экспресс-приложениях. В отличие от app.get () и app.post () или около того, вы можете использовать app.use () без указания URL-адреса запроса. В таком случае он выполняется каждый раз, независимо от того, по какому URL был достигнут щелчок.
app.use () работает так:
что очень просто.
И только тогда Express сделает все остальное, как маршрутизация.
app.use(function middleware1(req, res, next){
// middleware1 logic
}, function middleware1(req, res, next){
// middleware2 logic
}, ... middlewareN);
app.use - это способ регистрации промежуточного программного обеспечения или цепочки промежуточного программного обеспечения (или нескольких промежуточных программ) перед выполнением любой логики конечного маршрута или логики промежуточного маршрута в зависимости от порядка последовательности регистрации промежуточного программного обеспечения.
Промежуточное программное обеспечение: формирует цепочку функций / промежуточного программного обеспечения с 3 параметрами: req, res и next . next - обратный вызов, который ссылается на следующую функцию промежуточного программного обеспечения в цепочке, а в случае последней функции промежуточного программного обеспечения цепочки next указывает на функцию первого промежуточного программного обеспечения следующей зарегистрированной промежуточной цепочки.
В Express, если мы импортируем express из «express» и используем app = express (); тогда приложение, имеющее всю функциональность экспресс
если мы используем app.use ()
с любым модулем / функцией промежуточного программного обеспечения для использования во всем экспресс-проекте
app.use
эта функция требует промежуточного программного обеспечения. Например:
app.use('/user/:id', function (req, res, next) {
console.log('Request Type:', req.method);
next();
});
В этом примере показана функция промежуточного программного обеспечения, установленная в /user/:id
пути. Эта функция выполняется для любого типа HTTP-запроса в /user/:id
пути.
Он похож на веб-сервер REST, просто используйте разные /xx
для представления различных действий.
use
может сделать экспресс ; Мне просто нужно было знать, что это такое (и любые контекстные знания, чтобы узнать, как лучше исследовать себя).
app.use работает в качестве промежуточного программного обеспечения для запроса приложения. синтаксис
app.use('pass request format',function which contain request response onject)
пример
app.use('/',funtion(req,res){
console.log(all request pass through it);
// here u can check your authentication and other activities.
})
также вы можете использовать его в случае маршрутизации вашего запроса.
app.use('/', roting_object);
Промежуточное программное обеспечение - это общий термин для программного обеспечения, которое служит для «склейки», поэтому app.use - это метод для настройки промежуточного программного обеспечения, например: для анализа и обработки тела запроса: app.use (bodyParser.urlencoded ({extended: true) })); app.use (bodyParser.json ()); Есть много промежуточного программного обеспечения, которое вы можете использовать в вашем экспресс-приложении, просто прочитайте документацию: http://expressjs.com/en/guide/using-middleware.html
app.use применяет указанное промежуточное ПО к стеку промежуточного ПО основного приложения. При подключении промежуточного программного обеспечения к основному стеку приложений порядок подключения имеет значение; если вы подключите промежуточное программное обеспечение A до промежуточного программного обеспечения B, промежуточное программное обеспечение A всегда будет выполняться первым. Вы можете указать путь, к которому применимо конкретное промежуточное программное обеспечение. В приведенном ниже примере «Привет, мир» всегда будет записываться перед «счастливыми праздниками».
const express = require('express')
const app = express()
app.use(function(req, res, next) {
console.log('hello world')
next()
})
app.use(function(req, res, next) {
console.log('happy holidays')
next()
})
Он позволяет вам использовать любое промежуточное программное обеспечение ( подробнее ), например body_parser
, CORS
и т.д. Промежуточное программное обеспечение может вносить изменения request
и в response
объекты. Он также может выполнить кусок кода.
Вы также можете создать свою собственную функцию промежуточного программного обеспечения, такую как
app.use( function(req, res, next) {
// your code
next();
})
Он содержит три параметра req
, res
, next
Вы можете также использовать его для аутентификации и проверок входного Params держать контроллер в чистоте.
next()
используется для перехода к следующему промежуточному программному обеспечению или маршруту.
Вы можете отправить ответ из промежуточного программного обеспечения
Свяжите промежуточное программное обеспечение уровня приложения с экземпляром объекта app с помощью функций app.use () и app.METHOD (), где METHOD - это HTTP-метод запроса, который обрабатывает функция промежуточного программного обеспечения (например, GET, PUT или POST) в нижнем регистре.
Короче говоря, app.use () поддерживает все типы запросов [например: get, post, ...], поэтому в основном используется для установки middelware. или может использоваться для разделения маршрутов и функций
пример:
app.use("/test",functionName)
и functionName находится в другом файле
app.use()
это метод промежуточного программного обеспечения.
Промежуточный метод подобен перехватчику в Java, этот метод всегда выполняется для всех запросов.
Назначение и использование промежуточного программного обеспечения: -
app.use
создается с помощью Express (инфраструктура промежуточного программного обеспечения nodejs).
app.use используется для выполнения любого конкретного запроса в процессе
внедрения server.js (узел)
var app = require ('express');
так что в основном функция app.use вызывается каждый раз, когда сервер
app.use(bodyparser.json())
app.use - промежуточное ПО уровня приложения
Свяжите промежуточное программное обеспечение уровня приложения с экземпляром объекта app с помощью функций app.use () и app.METHOD (), где METHOD - это HTTP-метод запроса, который обрабатывает функция промежуточного программного обеспечения (например, GET, PUT или POST) в нижнем регистре.
Вы можете использовать для проверки всех запросов, например, вы хотите проверить токен / токен доступа, вам нужно написать промежуточное ПО, используя app.use для проверки токена в запросе.
В этом примере показана функция промежуточного программного обеспечения без пути монтирования. Функция выполняется каждый раз, когда приложение получает запрос.
var app = express()
app.use(function (req, res, next) {
console.log('Time:', Date.now())
next()
})
ссылка с https://expressjs.com/en/guide/using-middleware.html
app.use (путь, промежуточное программное обеспечение) используется для вызова функции промежуточного программного обеспечения, которую необходимо вызвать до того, как будет достигнут маршрут для соответствующего пути. Несколько функций промежуточного программного обеспечения могут быть вызваны через app.use.
app.use ('/ fetch', EnforceAuthentication) -> Промежуточное ПО EnforceAuthentication будет вызвано, когдабудет получензапрос, начинающийся с '/ fetch' . Это может быть / fetch / users , / fetch / ids / {id} и т. Д.
Некоторые функции промежуточного программного обеспечения могут вызываться независимо от запроса. В таких случаях путь не указан, и, поскольку путь по умолчанию равен /, а каждый запрос начинается с / , эта функция промежуточного программного обеспечения будет вызываться для всех запросов.
app.use (() => {// Инициализация общего сервиса})
next () fn необходимо вызывать в каждой функции промежуточного программного обеспечения, когда несколько функций промежуточного программного обеспечения передаются в app.use , иначе следующая функция промежуточного программного обеспечения не будет вызываться.
ссылка : http://expressjs.com/en/api.html#app.use
Примечание. В документации сказано, что мы можем обойти функции промежуточного программного обеспечения после текущей, вызвав next ('route') внутри текущей функции промежуточного программного обеспечения, но этот метод не работал для меня в app.use, но работал с app.METHOD, как показано ниже , Итак, были названы fn1 и fn2, но не fn3.
app.get('/fetch', function fn1(req, res, next) {
console.log("First middleware function called");
next();
},
function fn2(req, res, next) {
console.log("Second middleware function called");
next("route");
},
function fn3(req, res, next) {
console.log("Third middleware function will not be called");
next();
})