Czy możemy uzyskać zmienne w ciągu zapytania w Node.js, tak jak $_GET
w PHP?
Wiem, że w Node.js możemy uzyskać adres URL w żądaniu. Czy istnieje metoda uzyskania parametrów ciągu zapytania?
node.js
query-string
express
X Men
źródło
źródło
Odpowiedzi:
W Express jest to już zrobione i możesz po prostu użyć req.query do tego:
W przeciwnym razie w NodeJS możesz uzyskać dostęp do req.url i wbudowanego
url
modułu do [url.parse] ( https://nodejs.org/api/url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost ) ręcznie:źródło
url.parse(urlStr, [parseQueryString], [slashesDenoteHost])
req.query
req.query
lubreq.param
(który jest inny niżreq.params
... patrz poniżej.request
i nie ma nic wspólnego z Express. Zobacz odpowiedź @ whitequark poniżej (użycierequest.query
)Ponieważ w tagach wspomniałeś o Express.js, oto odpowiedź specyficzna dla Express: użyj req.query . Na przykład
źródło
req.query.id
, nie musisz używać notacji nawiasowej.W programie Express użyj
req.query
.req.params
pobiera tylko parametry trasy, a nie parametry ciągu zapytania. Zobacz dokumentację ekspresową lub żagle :To powiedziawszy, przez większość czasu chcesz uzyskać wartość parametru niezależnie od jego źródła. W takim przypadku użyj
req.param('foo')
.Wartość parametru zostanie zwrócona bez względu na to, czy zmienna znajdowała się w parametrach trasy, ciągu zapytania lub w zakodowanym treści żądania.
Na marginesie - jeśli chcesz uzyskać przecięcie wszystkich trzech typów parametrów żądania (podobnych do PHP
$_REQUEST
), po prostu musisz połączyć parametry razem - oto jak to ustawiłem w Sails . Należy pamiętać, że obiekt path / route parameters (req.params
) ma właściwości tablicowe, więc kolejność ma znaczenie (chociaż może się to zmienić w Express 4 )źródło
req.params
dokumentacji Sails: sailsjs.org/#/documentation/reference/req/req.params.html oraz nowych dokumentów ekspresowych: expressjs.com/4x/api.html#req.paramsreq.param()
funkcja pomocnika prawdopodobnie zostanie całkowicie usunięta w Expressie 5. Nie będzie to możliwe wkrótce po 2017 roku, więc poczekam na edycję ta odpowiedź do tego czasu. Tymczasem: Można go bezpiecznie używaćreq.param()
z Express <= 3.x / Sails <= 0,12 oraz z najnowszą dostępną wersją Express 4, aczkolwiek z komunikatem o wycofaniu. (Dla użytkowników Sails: Implementacjareq.param()
przeniesie się do rdzenia od Sails v1.0 i będzie nadal w pełni obsługiwana w Sails w przyszłości.)W przypadku Express.js chcesz
req.params
:źródło
Nauczyłem się z innych odpowiedzi i postanowiłem używać tego kodu w całej witrynie:
Następnie możesz po prostu zadzwonić
gdzie powinien znajdować się adres URL get
źródło
parse
nareq.url
nawróconych do obiektu.źródło
Jeśli używasz ES6 i Express , wypróbuj to
destructuring
podejście:W kontekście:
Możesz również użyć wartości domyślnych z
destructuring
:źródło
Istnieją 2 sposoby przekazywania parametrów za pomocą metody GET
Metoda 1: Podejście MVC, w którym przekazujesz parametry takie jak / routeename /: paramname
W tym przypadku możesz użyć req.params.paramname, aby uzyskać wartość parametru Na przykład zapoznaj się z poniższym kodem, w którym I oczekuję, że identyfikator jako param
link może wyglądać tak: http://myhost.com/items/23
Metoda 2: Podejście ogólne: przekazywanie zmiennych jako ciągu zapytania za pomocą „?” operator
Na przykład zapoznaj się z poniższym kodem, w którym oczekuję, że identyfikator jako parametr parametru zapytania
może wyglądać tak: http://myhost.com/items?id=23
źródło
Powinieneś być w stanie zrobić coś takiego:
źródło
AKTUALIZACJA 4 maja 2014 r
Stara odpowiedź została zachowana tutaj: https://gist.github.com/stefek99/b10ed037d2a4a323d638
1) Zainstaluj ekspresowe:
npm install express
app.js
2) Uruchom aplikację:
node app.js
3) Odwiedź w przeglądarce:
http://localhost:3000/endpoint?id=something
(wiele rzeczy zmieniło się od mojej odpowiedzi i uważam, że warto je aktualizować)
źródło
Mały serwer HTTP Node.js nasłuchujący na porcie 9080, analizujący dane GET lub POST i wysyłający go z powrotem do klienta w ramach odpowiedzi to:
Zapisz go jako
parse.js
i uruchom na konsoli, wpisując „node parse.js”.źródło
Whitequark odpowiedziała ładnie. Ale w obecnych wersjach Node.js i Express.js wymaga jeszcze jednej linii. Pamiętaj, aby dodać „wymagaj http” (drugi wiersz). Zamieściłem tutaj pełniejszy przykład, który pokazuje, jak to połączenie może działać. Po uruchomieniu wpisz
http://localhost:8080/?name=abel&fruit=apple
w przeglądarce, a otrzymasz fajną odpowiedź na podstawie kodu.źródło
To takie proste:
Przykładowy adres URL:
Możesz wydrukować wszystkie wartości ciągu zapytania, używając:
Wynik
Aby wydrukować konkretny:
Wynik
źródło
Możesz użyć
źródło
Możesz używać z ekspresowym ^ 4.15.4:
Mam nadzieję że to pomoże.
źródło
Aby
express.js
uzyskać całkiem proste, wszystko, co musisz zrobić w funkcji kontrolera, to:I to wszystko, zakładając, że używasz składni es6.
PD.
{id}
oznaczaObject destructuring
nową funkcję es6.źródło
Możesz użyć tego lub możesz wypróbować body-parser do parsowania specjalnego elementu z parametrów żądania.
źródło
To naprawdę proste:
źródło
możesz użyć modułu url do zbierania parametrów za pomocą url.parse
W expressjs odbywa się to przez
Na przykład:
źródło
W Express możemy po prostu użyć
req.query.<name>
. Działa tak samo jak$_GET['name']
w PHP.źródło
Z mojego punktu widzenia uważam, że wiele osób łączy dwie różne koncepcje. Podczas tworzenia REST znałem przekazywanie informacji w adresie URL na dwa sposoby: „zmienne ścieżki” i „parametry żądania” (parametry zapytania). RFC opisuje części URI w ten sposób: wpisz opis linku tutaj Więc zrozumiałem, że autor chciałby wiedzieć, jak przekazać parametry żądania. Chciałbym tylko, aby ten temat był łatwiejszy do zrozumienia, ale rozwiązanie zostało tu wspomniane wiele razy.
Możesz uzyskać parametry zapytania z URI
request.query.<name of the parameter>
, drugim wspomnianym rozwiązaniem byłorequest.params.<name of the parameter>
i dzięki temu możesz uzyskać zmienne ścieżki.źródło
Istnieją dwa sposoby otrzymania tego „identyfikatora”: 1) przy użyciu parametrów: parametry kodu będą wyglądały mniej więcej tak: Powiedzmy, że mamy tablicę,
Następnie dla parametrów możemy zrobić coś takiego:
2) Inną metodą jest użycie parametrów zapytania. więc adres URL będzie wyglądał mniej więcej tak: „..... \ api \ xyz? id = 1” gdzie „? id = 1” to część zapytania. W tym przypadku możemy zrobić coś takiego:
źródło
źródło
Jeśli kiedykolwiek będziesz musiał wysłać
GET
zapytanie do (IP
a także wDomain
innych odpowiedziach nie wspomniano, że możesz podaćport
zmienną), możesz skorzystać z tej funkcji:Nie przegap wymaganych modułów na górze pliku:
Pamiętaj też, że możesz używać
https
modułu do komunikacji przez bezpieczne domeny i ssl. więc te dwie linie zmieniłyby się:źródło
dlaczego nie zmieszać z kodem serwera
np. php
źródło
Używam MEANJS 0.6.0 z [email protected], to dobrze
Klient:
Kontroler:
usługi:
serwer
trasy
kontroler
źródło
-------- Dostęp do danych ciągu zapytania -------
Załóżmy, że jest to link http://webapplog.com/search?term=node.js&page=1
W ekspresowym trybie możesz użyć:
req.query.term
req.query.page
lubreq.query
(pobierze zapytanie do obiektu)// Przykład
app.get('http://webapplog.com/search?term=node.js&page=1',(req, res)=>{ res.json({term:req.query.term, page:req.query.page}) })
-------- Uzyskiwanie dostępu do parametrów adresu URL -------
Załóżmy, że jest to link http://webapplog.com/node.js/pages/100
Tak więc możesz użyć:
app.get('/:term/pages/:page',....)
req.params.term
req.params.page
// Przykład
app.get('http://webapplog.com/:term/pages/:page',(req, res)=>{ res.json({term:req.params.term, page:req.params.page}) })
źródło