req.query và req.param trong ExpressJS


89

Sự khác biệt chính giữa req.queryreq.paramtrong Express

  • Cả hai khác nhau như thế nào
  • Khi nào dùng thì dùng trong những trường hợp nào

Giả sử một khách hàng gửi cặp Android (Khóa, giá trị) trong yêu cầu ........ sử dụng cặp nào?

[BIÊN TẬP]

Giả sử android gửi yêu cầu POST -> Mục đích là gửi (Khóa, Giá trị) đến máy khách và máy chủ phải thực hiện truy vấn cơ sở dữ liệu dựa trên giá trị trong máy chủ và trả về phản hồi JSON

Nhìn :: ở câu hỏi này cho các chương trình tôi tham khảo: : chương trình đơn giản Express cho truy vấn kết quả


1
Ý bạn là req.queryreq.param?
arb

1
Đúng ! ......... Tôi đã sửa đổi câu hỏi cũng

Câu trả lời:


116

req.query sẽ trả về một đối tượng JS sau khi chuỗi truy vấn được phân tích cú pháp.

/ user? name = tom & age = 55 - req.querysẽ mang lại kết quả{name:"tom", age: "55"}

req.paramssẽ trả về các tham số trong tuyến đường phù hợp. Nếu tuyến đường của bạn là / user /: id và bạn đưa ra yêu cầu tới / user / 5 - req.paramssẽ mang lại kết quả{id: "5"}

req.paramlà một hàm loại bỏ các tham số ra khỏi yêu cầu. Tất cả những điều này có thể được tìm thấy ở đây .

CẬP NHẬT

Nếu động từ là a POSTvà bạn đang sử dụng bodyParser, thì bạn sẽ có thể nhận được phần thân dạng trong hàm với req.body. Đó sẽ là phiên bản JS được phân tích cú pháp của POSTbiểu mẫu ed.


Cảm ơn, sau đó Giả sử một khách hàng gửi cặp Android (Khóa, giá trị) trong yêu cầu ........ sử dụng cặp nào trong Express?

Không có cách nào để trả lời câu hỏi này mà không nhìn thấy yêu cầu được đề cập.
arb

Vui lòng xem câu hỏi cập nhật ..... tôi cũng đã đề cập đến liên kết đến chương trình tôi đang sử dụng express trong một trong những câu hỏi tôi đã đăng ..... vui lòng thêm nguồn cấp dữ liệu lại!

@Iplay nếu câu trả lời này giúp ích cho bạn, vui lòng xem xét đánh dấu nó là câu trả lời cho câu hỏi này. Cảm ơn.
arb

15

req.querylà chuỗi truy vấn được gửi đến máy chủ, ví dụ /page?test = 1 , req.paramlà các tham số được truyền cho trình xử lý.

app.get('/user/:id', handler);, Sẽ /user/blah, req.param.idsẽ quay trở lại blah;


Cảm ơn, sau đó Giả sử một khách hàng gửi cặp Android (Khóa, giá trị) trong yêu cầu ........ sử dụng cái nào?

1
Tôi không có ý tưởng những gì bạn đang nói về, nếu đó là một yêu cầu POST, nó sẽ nằm trong req.data, nếu nó GET t'll đượcreq.param
OneOfOne

Xin chào, bạn có thể vui lòng cho tôi biết cách kiểm tra req.params với undefined không?
Arj 1411

@AnandRaj nó sẽ chỉ trống, vì vậy hãy kiểm trac.Param("id") == ""
OneOfOne

@OneOfOne, Cảm ơn bạn đã trả lời. Hãy để tôi kiểm tra nó và sẽ cập nhật cho bạn
Arj 1411

14

Tôi sẽ đề nghị sử dụng sau

req.param('<param_name>')

req.param ("") hoạt động như sau

Việc tra cứu được thực hiện theo thứ tự sau:

req.params
req.body
req.query

Quyền truy cập trực tiếp vào req.body, req.params và req.query nên được ưu tiên để rõ ràng - trừ khi bạn thực sự chấp nhận đầu vào từ mỗi đối tượng.

Tham khảo: http://expressjs.com/4x/api.html#req.param


1
Xin chào, bạn có thể vui lòng cho tôi biết cách kiểm tra req.params với undefined không?
Arj 1411

@AnandRaj không xác định nghĩa là gì? bạn có nghĩa là params không được biết đến?
Abhijit Gaikwad

ý tôi là khi tôi kiểm tra loại req.params, nó hiển thị không xác định. Mục tiêu của tôi là kiểm tra xem req.params. <Bất kỳ tham số URI nào> là null hay không
Arj 1411

@AnandRaj bạn có thể vui lòng đăng mã của bạn được không? Mã sau phù hợp với tôi var express = demand ('express'); var app = express (); app.get ('/', function (req, res) {console.log (req.params); res.send (req.params);}); app.listen (3000);
Abhijit Gaikwad

@AnandRaj hãy thử nếu (reqParams.hasOwnProperty ('deviceType')) {}
Abhijit Gaikwad

9

Vượt qua params

GET request to "/cars/honda" 

trả về danh sách các kiểu xe Honda

Chuyển truy vấn

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

trả về danh sách các kiểu xe Honda, nhưng được lọc để chỉ trả lại các kiểu có màu xanh lam.

Sẽ không hợp lý khi thêm các bộ lọc đó vào các tham số URL (/ car / honda / color / blue) bởi vì theo REST, điều đó có nghĩa là chúng ta muốn nhận được một loạt thông tin về màu "blue". Vì những gì chúng tôi thực sự muốn là danh sách các mẫu xe Honda đã lọc, chúng tôi sử dụng các chuỗi truy vấn để lọc ra các kết quả được trả về.

Lưu ý rằng các chuỗi truy vấn thực sự chỉ là các cặp {key: value} ở định dạng hơi khác:? Key1 = value1 & key2 = value2 & key3 = value3.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.