Bisakah kita mendapatkan variabel dalam string kueri di Node.js sama seperti kita mendapatkannya $_GET
di PHP?
Saya tahu bahwa di Node.js kita bisa mendapatkan URL dalam permintaan. Apakah ada metode untuk mendapatkan parameter string kueri?
node.js
query-string
express
XMen
sumber
sumber
Jawaban:
Dalam Express sudah dilakukan untuk Anda dan Anda dapat menggunakan req.query untuk itu:
Kalau tidak, di NodeJS, Anda dapat mengakses req.url dan
url
modul builtin ke [url.parse] ( https://nodejs.org/api/url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost ) secara manual:sumber
url.parse(urlStr, [parseQueryString], [slashesDenoteHost])
req.query
req.query
ataureq.param
(yang berbeda darireq.params
... lihat di bawah.request
dan tidak ada hubungannya dengan Express. Lihat @ whitequark jawaban di bawah ini (gunakanrequest.query
)Karena Anda telah menyebutkan Express.js dalam tag Anda, berikut ini adalah jawaban khusus-Ekspres: gunakan req.query . Misalnya
sumber
req.query.id
, tidak perlu menggunakan notasi braket.Di Express, gunakan
req.query
.req.params
hanya mendapatkan parameter rute, bukan parameter string kueri. Lihat dokumentasi ekspres atau layar :Yang mengatakan, sebagian besar waktu, Anda ingin mendapatkan nilai parameter terlepas dari sumbernya. Dalam hal itu, gunakan
req.param('foo')
.Nilai parameter akan dikembalikan apakah variabel berada di parameter rute, string kueri, atau badan permintaan yang disandikan.
Catatan samping - jika Anda ingin mendapatkan persimpangan dari ketiga jenis parameter permintaan (mirip dengan PHP
$_REQUEST
), Anda hanya perlu menggabungkan parameter bersama - inilah cara saya mengaturnya di Sails . Perlu diingat bahwa parameter path / route object (req.params
) memiliki properti array, jadi ketertiban penting (meskipun ini dapat berubah pada Express 4 )sumber
req.params
dalam dokumen Sails: sailsjs.org/#/documentation/reference/req/req.params.html dan dokumen ekspres baru: expressjs.com/4x/api.html#req.paramsreq.param()
fungsi pembantu kemungkinan akan sepenuhnya dihapus di Express 5. Ini tidak akan segera sampai beberapa waktu kemudian pada 2017, jadi saya akan menunggu untuk mengedit jawaban ini sampai saat itu. Sementara itu: Aman untuk digunakanreq.param()
dengan Express <= 3.x / Sails <= 0.12, dan dengan rilis terbaru Express 4 yang tersedia, meskipun dengan pesan log penghentian. (Untuk pengguna Sails: Implementasireq.param()
akan pindah ke inti pada Sails v1.0, dan itu akan terus didukung penuh di Sails di masa depan.)Untuk Express.js yang ingin Anda lakukan
req.params
:sumber
Saya belajar dari jawaban lain dan memutuskan untuk menggunakan kode ini di seluruh situs saya:
Maka Anda bisa menelepon
di mana URL untuk mendapatkan seharusnya
sumber
parse
padareq.url
mualaf ke objek.sumber
Jika Anda menggunakan ES6 dan Express , coba
destructuring
pendekatan ini :Dalam konteks:
Anda dapat menggunakan nilai default
destructuring
juga:sumber
Ada 2 cara untuk meneruskan parameter melalui metode GET
Metode 1: Pendekatan MVC tempat Anda melewatkan parameter seperti / routename /: paramname
Dalam hal ini Anda dapat menggunakan req.params.paramname untuk mendapatkan nilai parameter Sebagai contoh, lihat kode di bawah ini di mana saya Saya mengharapkan Id sebagai
tautan param bisa seperti: http://myhost.com/items/23
Metode 2: Pendekatan Umum: Melewati variabel sebagai string kueri menggunakan '?'
Contoh operator, lihat kode di bawah ini di mana saya mengharapkan Id sebagai
tautan parameter kueri bisa seperti: http://myhost.com/items?id=23
sumber
Anda harus dapat melakukan sesuatu seperti ini:
sumber
UPDATE 4 Mei 2014
Jawaban lama dipertahankan di sini: https://gist.github.com/stefek99/b10ed037d2a4a323d638
1) Instal express:
npm install express
app.js
2) Jalankan aplikasi:
node app.js
3) Kunjungi di browser:
http://localhost:3000/endpoint?id=something
(banyak hal telah berubah sejak jawaban saya dan saya percaya ada baiknya memperbarui hal-hal ini)
sumber
Server HTTP Node.js kecil yang mendengarkan pada port 9080, mem-parsing data GET atau POST dan mengirimkannya kembali ke klien sebagai bagian dari respons adalah:
Simpan sebagai
parse.js
, dan jalankan di konsol dengan memasukkan "node parse.js".sumber
Whitequark merespons dengan baik. Tetapi dengan versi Node.js dan Express.js saat ini, ia membutuhkan satu baris lagi. Pastikan untuk menambahkan 'memerlukan http' (baris kedua). Saya telah memposting contoh yang lebih lengkap di sini yang menunjukkan bagaimana panggilan ini dapat bekerja. Setelah berjalan, ketikkan
http://localhost:8080/?name=abel&fruit=apple
browser Anda, dan Anda akan mendapatkan respons keren berdasarkan kode.sumber
Sangat sederhana:
URL contoh:
Anda bisa mencetak semua nilai string kueri dengan menggunakan:
Keluaran
Untuk mencetak spesifik:
Keluaran
sumber
Kamu bisa menggunakan
sumber
Anda dapat menggunakan dengan express ^ 4.15.4:
Semoga ini membantu.
sumber
Dalam
express.js
Anda bisa mendapatkannya cukup mudah, semua yang perlu Anda lakukan dalam fungsi controller Anda adalah:Dan itu saja, dengan anggapan Anda menggunakan sintaksis ES6.
PD
{id}
singkatanObject destructuring
, fitur es6 baru.sumber
Anda dapat menggunakan ini atau Anda dapat mencoba body-parser untuk mem-parsing elemen khusus dari parameter permintaan.
sumber
Ini sebenarnya sederhana:
sumber
Anda dapat menggunakan modul url untuk mengumpulkan parameter dengan menggunakan url.parse
Di expressjs itu dilakukan oleh,
Misalnya:
sumber
Dalam Express, kita cukup menggunakan
req.query.<name>
. Ini berfungsi sama seperti$_GET['name']
di PHP.sumber
Dari sudut pandang saya, saya pikir banyak orang menggabungkan dua konsep yang berbeda. Selama pengembangan REST, saya terbiasa menyampaikan informasi di URL dengan dua cara "variabel path" dan "parameter permintaan" (parameter kueri). RFC menggambarkan bagian-bagian URI seperti ini: masukkan uraian tautan di sini. Jadi saya mengerti bahwa penulis ingin mengetahui cara menyampaikan parameter permintaan. Saya hanya ingin membuat topik lebih mudah dimengerti, tetapi solusinya disebutkan di sini berkali-kali.
Anda bisa mendapatkan parameter kueri dari URI dengan
request.query.<name of the parameter>
, solusi yang disebutkan kedua adalahrequest.params.<name of the parameter>
dan dengan ini Anda bisa mendapatkan variabel path.sumber
Jadi, ada dua cara di mana "id" ini dapat diterima: 1) menggunakan params: kode params akan terlihat seperti: Katakanlah kita memiliki array,
Kemudian untuk params kita dapat melakukan sesuatu seperti:
2) Metode lain adalah dengan menggunakan parameter kueri. jadi url akan terlihat seperti "..... \ api \ xyz? id = 1" di mana "? id = 1" adalah bagian permintaan. Dalam hal ini kita dapat melakukan sesuatu seperti:
sumber
sumber
Jika Anda perlu mengirim
GET
permintaan keIP
dan jugaDomain
(Jawaban lain tidak menyebutkan Anda dapat menentukanport
variabel), Anda dapat menggunakan fungsi ini:Jangan lewatkan membutuhkan modul di bagian atas file Anda:
Juga perhatikan bahwa Anda dapat menggunakan
https
modul untuk berkomunikasi melalui domain dan ssl yang aman. jadi dua baris ini akan berubah:sumber
mengapa tidak dicampur dengan kode server
mis. php
sumber
Saya menggunakan MEANJS 0.6.0 dengan [email protected], bagus
Klien:
Pengendali:
jasa:
Server
rute
pengontrol
sumber
-------- Mengakses Data Query String -------
Misalkan ini adalah tautan http://webapplog.com/search?term=node.js&page=1
Jadi secara kilat Anda dapat menggunakan:
req.query.term
req.query.page
ataureq.query
(itu akan mengambil kueri di Objek)// Contoh
app.get('http://webapplog.com/search?term=node.js&page=1',(req, res)=>{ res.json({term:req.query.term, page:req.query.page}) })
-------- Mengakses Parameter URL -------
Misalkan ini adalah tautan http://webapplog.com/node.js/pages/100
Jadi secara tegas Anda dapat menggunakan:
app.get('/:term/pages/:page',....)
req.params.term
req.params.page
// Contoh
app.get('http://webapplog.com/:term/pages/:page',(req, res)=>{ res.json({term:req.params.term, page:req.params.page}) })
sumber