req.query i req.param w ExpressJS

89

Główne różnice między req.queryi req.paramw Express

  • Czym się różnią od siebie
  • Kiedy używać i w jakich przypadkach

Załóżmy, że klient w żądaniu wysyła, powiedzmy, parę Android (klucz, wartość)… którego użyć?

[EDYTOWAĆ]

Załóżmy, że android wysyła żądanie POST -> Intencją jest wysłanie (klucz, wartość) do klienta, a serwer powinien wykonać zapytanie do bazy danych na podstawie wartości na serwerze i zwrócić odpowiedź JSON

Spójrz na to pytanie :: dla programu i odwołuje: : prosty program Express, dla zapytań wynik

William Jones
źródło
1
Masz na myśli req.queryi req.param?
arb
1
tak ! .........

Odpowiedzi:

115

req.query zwróci obiekt JS po przeanalizowaniu ciągu zapytania.

/ user? name = tom & age = 55 - req.querydałoby{name:"tom", age: "55"}

req.paramszwróci parametry w dopasowanej trasie. Jeśli twoja trasa to / user /: id i wyślesz żądanie do / user / 5 - req.paramsda{id: "5"}

req.paramto funkcja, która usuwa parametry z żądania. Wszystko to można znaleźć tutaj .

AKTUALIZACJA

Jeśli czasownik to a POSTi używasz bodyParser, powinieneś być w stanie uzyskać treść formy, z którą funkcjonujesz req.body. Będzie to przeanalizowana wersja JS POSTformularza ed.

arb
źródło
Dzięki, więc załóżmy, że klient wysyła na przykład parę Androida (klucz, wartość) w żądaniu ........ którego użyć w Express?
Nie ma sposobu, aby odpowiedzieć na to pytanie, nie widząc danego wniosku.
arb
Proszę spojrzeć na zaktualizowane pytanie ..... wspomniałem również o linku do programu, którego używam w ekspresowym jednym z pytań, które zamieściłem ..... proszę dodać informację zwrotną!
@Odtwórz, jeśli ta odpowiedź Ci pomogła, rozważ oznaczenie jej jako odpowiedzi na to pytanie. Dzięki.
arb
15

req.queryto ciąg zapytania wysyłany do serwera, przykład /page?test = 1 , req.paramto parametry przekazywane do programu obsługi.

app.get('/user/:id', handler);, zamierzając /user/blah, req.param.idwróci blah;

OneOfOne
źródło
Dzięki, więc załóżmy, że klient wysyła na przykład parę Androida (klucz, wartość) w żądaniu ........ którego użyć?
1
Nie mam pojęcia, o czym mówisz, jeśli jest to żądanie POST, będzie w req.data, jeśli GET, to będziereq.param
OneOfOne
Cześć, czy mógłbyś mi powiedzieć, jak sprawdzić parametry wymagań względem niezdefiniowanych?
Arj 1411
@AnandRaj byłoby po prostu puste, więc sprawdźc.Param("id") == ""
OneOfOne
@OneOfOne, dziękuję za odpowiedź. Pozwól, że to sprawdzę i
poinformuję
14

Sugerowałbym użycie następujących

req.param('<param_name>')

req.param ("") działa w następujący sposób

Wyszukiwanie jest wykonywane w następującej kolejności:

req.params
req.body
req.query

Dla przejrzystości należy preferować bezpośredni dostęp do req.body, req.params i req.query - chyba że naprawdę akceptujesz dane wejściowe z każdego obiektu.

Ref: http://expressjs.com/4x/api.html#req.param

Abhijit Gaikwad
źródło
1
Cześć, czy mógłbyś mi powiedzieć, jak sprawdzić parametry wymagań względem niezdefiniowanych?
Arj 1411
@AnandRaj, co masz na myśli mówiąc undefined? to znaczy, że parametry nie są znane?
Abhijit Gaikwad
chodziło mi o to, że gdy sprawdziłem typ req.params, który pokazuje niezdefiniowany. Moim celem jest sprawdzenie, czy req.params. <Dowolny parametr URI> ma wartość null, czy nie
Arj 1411
@AnandRaj czy możesz wysłać swój kod? Poniższy kod działa u mnie var express = require ('express'); var app = express (); app.get ('/', function (req, res) {console.log (req.params); res.send (req.params);}); app.listen (3000);
Abhijit Gaikwad
@AnandRaj try if (reqParams.hasOwnProperty ('deviceType')) {}
Abhijit Gaikwad
9

Przekazywanie parametrów

GET request to "/cars/honda" 

zwraca listę modeli samochodów Honda

Przekazywanie zapytania

GET request to "/car/honda?color=blue"

zwraca listę modeli samochodów Honda, ale są one filtrowane, więc zwracane są tylko modele z kolorem niebieskim.

Nie ma sensu dodawać tych filtrów do parametrów URL (/ samochód / honda / kolor / niebieski), ponieważ według REST oznaczałoby to, że chcemy uzyskać garść informacji o kolorze „niebieskim”. Ponieważ to, czego naprawdę chcemy, to przefiltrowana lista modeli Hondy, używamy ciągów zapytań do filtrowania wyników, które zostaną zwrócone.

Zwróć uwagę, że ciągi zapytań to w rzeczywistości tylko pary {klucz: wartość} w nieco innym formacie:? Klucz1 = wartość1 & klucz2 = wartość2 & klucz3 = wartość3.

Shivam Chhetri
źródło