W dokumentacji dla express
modułu NodeJS przykładowy kod ma app.use(...)
.
Jaka jest use
funkcja i gdzie jest zdefiniowana?
W dokumentacji dla express
modułu NodeJS przykładowy kod ma app.use(...)
.
Jaka jest use
funkcja i gdzie jest zdefiniowana?
Odpowiedzi:
Obiekt aplikacji jest tworzony przy tworzeniu serwera Express. Ma stos oprogramowania pośredniego, który można dostosować
app.configure()
(jest to obecnie przestarzałe w wersji 4.x) .Aby skonfigurować oprogramowanie pośrednie, możesz wywołać
app.use(<specific_middleware_layer_here>)
każdą warstwę oprogramowania pośredniego, które chcesz dodać (może być ogólne dla wszystkich ścieżek lub uruchamiane tylko na określonych ścieżkach obsługiwanych przez serwer), i doda się do stosu oprogramowania pośredniego Express . Warstwy oprogramowania pośredniego można dodawać jeden po drugim w wielu wywołaniachuse
lub nawet wszystkie jednocześnie w jednym wywołaniu. Więcej informacji znajduje się wuse
dokumentacji .Aby podać przykład koncepcyjnego zrozumienia Express Middleware, oto jak wygląda mój stos oprogramowania pośredniego aplikacji (app.stack) podczas logowania obiektu aplikacji do konsoli jako JSON:
Jak może być w stanie wydedukować, zadzwoniłem
app.use(express.bodyParser())
,app.use(express.cookieParser())
itp, który dodaje te wyrażają middleware „warstw” na stos middleware. Zauważ, że trasy są puste, co oznacza, że kiedy dodałem te warstwy oprogramowania pośredniego, podałem, że będą one uruchamiane na dowolnej trasie. Gdybym dodał niestandardową warstwę oprogramowania pośredniego, która wyzwalała się tylko na ścieżce,/user/:id
która byłaby odzwierciedlona jako ciąg znaków wroute
polu tego obiektu warstwy oprogramowania pośredniego na wydruku stosu powyżej.Każda warstwa zasadniczo dodaje funkcję, która konkretnie obsługuje coś w twoim przepływie przez oprogramowanie pośrednie.
Np. Dodając
bodyParser
, masz pewność , że Twój serwer obsługuje przychodzące żądania za pośrednictwem ekspresowego oprogramowania pośredniego . Dlatego teraz analizowanie treści przychodzących żądań jest częścią procedury, którą wykonuje oprogramowanie pośrednie podczas obsługi żądań przychodzących - wszystko dlatego, że zadzwoniłeśapp.use(bodyParser)
.źródło
next()
wywołaniem zwrotnym, które ma wywoływać każde oprogramowanie pośrednie, aby przekazać przetwarzanie do następnej funkcji w potoku. System routingu (pierwszy argumentapp.use()
) pozwala na rozgałęzienie potoku w zależności od adresu URLuse
to metoda konfiguracji oprogramowania pośredniego używanego przez trasy obiektu serwera Express HTTP. Metoda jest zdefiniowana jako część Connect, na której opiera się Express.Aktualizacja Począwszy od wersji 4.x, Express nie zależy już od Connect .
Funkcje oprogramowania pośredniego, które wcześniej były zawarte w Express, są teraz w osobnych modułach; zobacz listę funkcji oprogramowania pośredniego .
źródło
app.use(function(){ var object = new SomeConstructor; next(); })
Każde app.use (oprogramowanie pośrednie) jest wywoływane za każdym razem, gdy żądanie jest wysyłane do serwera.
źródło
app.use () służy do montowania funkcji oprogramowania pośredniego lub montowania do określonej ścieżki, funkcja oprogramowania pośredniego jest wykonywana, gdy ścieżka podstawowa jest zgodna.
Na przykład: jeśli używasz app.use () w indexRouter.js, to tak:
W powyższym kodzie app.use () zamontuj ścieżkę na „/ ads” do adsRouter.js.
Teraz w adsRouter.js
w adsRouter.js ścieżka będzie taka jak dla ads- '/ ads / show', a następnie będzie działać zgodnie z controllerIndex.ads.showAd ().
app.use ([ścieżka], oddzwanianie, [oddzwonienie]): możemy dodać oddzwanianie na to samo.
źródło
app.use () działa jako oprogramowanie pośrednie w aplikacjach ekspresowych. W przeciwieństwie do app.get () i app.post () , możesz użyć app.use () bez podawania adresu URL żądania. W takim przypadku program jest wykonywany za każdym razem, bez względu na trafiony adres URL.
źródło
app.use () działa w ten sposób:
co bardzo proste.
I tylko wtedy ekspres wykona resztę rzeczy, takich jak routing.
źródło
app.use to sposób na rejestrację oprogramowania pośredniego lub łańcucha oprogramowania pośredniego (lub wielu programów pośrednich ) przed wykonaniem jakiejkolwiek logiki trasy końcowej lub logiki trasy pośredniej, w zależności od kolejności sekwencji rejestracji oprogramowania pośredniego.
Oprogramowanie pośrednie: tworzy łańcuch funkcji / funkcje oprogramowania pośredniego z 3 parametrami: wymagania, res i dalej . next jest wywołaniem zwrotnym, które odnosi się do następnej funkcji oprogramowania pośredniego w łańcuchu, aw przypadku ostatniej funkcji oprogramowania pośredniego łańcucha kolejne punkty do funkcji pierwszego oprogramowania pośredniego następnego zarejestrowanego łańcucha pośredniego.
źródło
W express, jeśli importujemy ekspres z „express” i używamy app = express (); następnie aplikacja posiadająca wszystkie funkcje ekspresowe
jeśli użyjemy app.use ()
z dowolną funkcją modułu / oprogramowania pośredniego do użycia w całym projekcie ekspresowym
źródło
app.use
jest funkcją wymagającą oprogramowania pośredniego. Na przykład:Ten przykład pokazuje zainstalowaną na
/user/:id
ścieżce funkcję oprogramowania pośredniego . Ta funkcja jest wykonywana dla dowolnego typu żądania HTTP na/user/:id
ścieżce.Jest podobny do serwera REST Web Server, wystarczy użyć innego
/xx
do reprezentowania różnych działań.źródło
use
może zrobić ekspres ; Po prostu musiałem wiedzieć, że to jest to (i wszelka wiedza kontekstowa, aby wiedzieć, jak samodzielnie badać).app.use jest woksem jako oprogramowanie pośrednie dla żądania aplikacji. składnia
przykład
możesz go również użyć w przypadku przekierowania żądania.
źródło
Oprogramowanie pośrednie to ogólny termin określający oprogramowanie, które służy do „sklejenia”, więc app.use to metoda konfiguracji oprogramowania pośredniego, na przykład: parsowanie i obsługa treści żądania: app.use (bodyParser.urlencoded ({Extended: true })); app.use (bodyParser.json ()); istnieje wiele programów pośrednich, których można użyć w aplikacji ekspresowej. Przeczytaj dokument: http://expressjs.com/en/guide/using-middleware.html
źródło
app.use stosuje określone oprogramowanie pośrednie do głównego stosu oprogramowania pośredniego aplikacji. Podczas dołączania oprogramowania pośredniego do głównego stosu aplikacji kolejność załączników ma znaczenie; jeśli dołączasz oprogramowanie pośrednie A przed oprogramowaniem pośrednim B, oprogramowanie pośrednie A zawsze będzie uruchamiane jako pierwsze. Możesz określić ścieżkę, dla której ma zastosowanie określone oprogramowanie pośrednie. W poniższym przykładzie „witaj świecie” zawsze będzie rejestrowany przed „szczęśliwymi świętami”.
źródło
To pozwala na użycie dowolnego middleware ( czytaj więcej ), jak
body_parser
,CORS
itp Middleware może dokonać zmianrequest
iresponse
obiektów. Może również wykonać fragment kodu.źródło
Możesz także utworzyć własną funkcję oprogramowania pośredniego
Zawiera ona trzy parametry
req
,res
,next
można go również używać do uwierzytelniania i walidacji params wejściowych, aby utrzymać swój kontroler czyste.
next()
służy do przejścia do następnego oprogramowania pośredniego lub trasy.Możesz wysłać odpowiedź z oprogramowania pośredniego
źródło
Powiązanie oprogramowania pośredniego na poziomie aplikacji z instancją obiektu aplikacji za pomocą funkcji app.use () i app.METHOD (), gdzie METHOD to metoda HTTP żądania obsługiwanego przez funkcję oprogramowania pośredniego (takiego jak GET, PUT lub POST) małymi literami.
źródło
W skrócie app.use () obsługuje wszystkie typy żądań [np. Get, post, ...], więc jest najczęściej używany do konfiguracji oprogramowania pośredniego. lub może być używany, gdy trasy i funkcje są rozdzielone
przykład:
a nazwa_funkcji znajduje się w innym pliku
źródło
app.use()
jest metodą oprogramowania pośredniego.Metoda oprogramowania pośredniego przypomina przechwytywanie w Javie, ta metoda zawsze wykonuje się dla wszystkich żądań.
Cel i użycie oprogramowania pośredniego: -
źródło
app.use
jest tworzony przez express (framework pośredni nodejs)
app.use służy do wykonywania dowolnego zapytania w procesie inicjowania server.js
(węzeł)
var app = wymagany („ekspresowy”); więc w zasadzie funkcja app.use wywoływana jest przy każdym uruchomieniu serwera
app.use(bodyparser.json())
źródło
app.use to oprogramowanie pośrednie na poziomie aplikacji
Powiązanie oprogramowania pośredniego na poziomie aplikacji z instancją obiektu aplikacji za pomocą funkcji app.use () i app.METHOD (), gdzie METHOD to metoda HTTP żądania obsługiwanego przez funkcję oprogramowania pośredniego (takiego jak GET, PUT lub POST) małymi literami.
możesz użyć do sprawdzenia wszystkich żądań, na przykład chcesz sprawdzić token / token dostępu, musisz napisać oprogramowanie pośrednie za pomocą app.use, aby sprawdzić token w żądaniu.
Ten przykład pokazuje funkcję oprogramowania pośredniego bez ścieżki montowania. Funkcja jest wykonywana za każdym razem, gdy aplikacja odbierze żądanie.
referencja z https://expressjs.com/en/guide/using-middleware.html
źródło
app.use (ścieżka, oprogramowanie pośrednie) służy do wywoływania funkcji oprogramowania pośredniego, które należy wywołać, zanim trasa zostanie trafiona dla odpowiedniej ścieżki. Za pomocą aplikacji można wywołać wiele funkcji oprogramowania pośredniego.
app.use ('/ fetch', enforceAuthentication) -> oprogramowanie pośrednie enforceAuthentication fn zostanie wywołane po otrzymaniu żądania zaczynającego się od '/ fetch' . Może to być / fetch / users , / fetch / ids / {id} itp
Niektóre funkcje oprogramowania pośredniego mogą wymagać wywołania niezależnie od żądania. W takich przypadkach ścieżka nie jest określona, a ponieważ domyślną ścieżką jest / i każde żądanie zaczyna się od / , ta funkcja oprogramowania pośredniego zostanie wywołana dla wszystkich żądań.
app.use (() => {// Zainicjuj wspólną usługę})
fn next () należy wywołać w ramach każdej funkcji oprogramowania pośredniego, gdy wiele funkcji oprogramowania pośredniego jest przekazywanych do app.use , w przeciwnym razie następna funkcja oprogramowania pośredniego nie zostanie wywołana.
odniesienie: http://expressjs.com/en/api.html#app.use
Uwaga: dokumentacja mówi, że możemy ominąć funkcje oprogramowania pośredniego następujące po bieżącej, wywołując next ('route') w ramach bieżącej funkcji oprogramowania pośredniego, ale ta technika nie działała dla mnie w app.use, ale działała z app. METODA jak poniżej . Więc fn1 i fn2 zostały wywołane, ale nie fn3.
źródło