Pembaruan Maret 2017:
Dukungan URL.searchParams telah secara resmi mendarat di Chrome 51, tetapi browser lain masih memerlukan polyfill .
Cara resmi untuk bekerja dengan parameter kueri adalah menambahkannya ke URL. Dari spec , ini adalah contoh:
var url = new URL("https://geo.example.org/api"),
params = {lat:35.696233, long:139.570431}
Object.keys(params).forEach(key => url.searchParams.append(key, params[key]))
fetch(url).then(/* … */)
Namun, saya tidak yakin Chrome mendukung searchParams
properti URL (pada saat penulisan) sehingga Anda mungkin ingin menggunakan pustaka pihak ketiga atau menggulung solusi Anda sendiri .
Pembaruan April 2018:
Dengan menggunakan konstruktor URLSearchParams, Anda dapat menetapkan array 2D atau objek dan hanya menetapkannya ke url.search
alih - alih memutar semua kunci dan menambahkannya
var url = new URL('https://sl.se')
var params = {lat:35.696233, long:139.570431} // or:
var params = [['lat', '35.696233'], ['long', '139.570431']]
url.search = new URLSearchParams(params).toString();
fetch(url)
Sidenote: URLSearchParams
juga tersedia di NodeJS
const { URL, URLSearchParams } = require('url');
URLSearchParams
antarmuka; Saya akan berasumsi (meskipun saya tidak 100% yakin) bahwa browser berwarna merah sebenarnya ada browser yangURL
objeknya tidak memiliki.searchParams
properti. Yang penting, Edge masih tidak memiliki dukungan.new URLSearchParams
tampaknya tidak berfungsi dengan benar denganArray
properti. Saya mengharapkannya untuk mengubah propertiarray: [1, 2]
menjadiarray[]=1&array[]=2
, tetapi mengubahnya menjadiarray=1,2
. Secara manual menggunakanappend
metode itu menghasilkanarray=1&array=2
, tapi saya harus beralih lebih dari objek params, dan melakukannya hanya untuk jenis array, tidak sangat ergonomis.sumber
Seperti yang sudah dijawab, ini per spec tidak mungkin dengan
fetch
-API, belum. Tapi saya harus perhatikan:Jika Anda aktif
node
, adaquerystring
paketnya. Itu dapat merender / mengurai objek / querystrings:... lalu tambahkan saja ke url untuk meminta.
Namun, masalah dengan hal di atas adalah, bahwa Anda harus selalu menambahkan tanda tanya (
?
). Jadi, cara lain adalah dengan menggunakanparse
metode dariurl
paket node dan melakukannya sebagai berikut:Lihat
query
di https://nodejs.org/api/url.html#url_url_format_urlobjIni dimungkinkan, seperti yang dilakukan secara internal ini :
sumber
Pendekatan ES6 ringkas:
Fungsi toString () URLSearchParam akan mengubah argumen kueri menjadi string yang dapat ditambahkan ke URL. Dalam contoh ini, toString () dipanggil secara implisit ketika ia digabungkan dengan URL.
IE tidak mendukung fitur ini, tetapi ada polyfill yang tersedia.
sumber
Anda dapat menggunakan
#stringify
dari string kuerisumber
Mungkin ini lebih baik:
sumber
encodeQueryString - mengkodekan objek sebagai parameter querystring
sumber
Saya tahu ini menyatakan yang paling jelas, tetapi saya merasa perlu menambahkan ini sebagai jawaban karena ini yang paling sederhana:
sumber
/
,+
atau&
muncul dalam string.Templat literal juga merupakan opsi yang valid di sini, dan memberikan beberapa manfaat.
Anda dapat memasukkan string mentah, angka, nilai boolean, dll:
Anda dapat memasukkan variabel:
Anda dapat memasukkan logika dan fungsi:
Sejauh menyusun data string kueri yang lebih besar, saya suka menggunakan array yang digabungkan ke string. Saya merasa lebih mudah dipahami daripada beberapa metode lain:
sumber
+
atau&
tidak akan berfungsi seperti yang diharapkan dan Anda akan berakhir dengan parameter dan nilai yang berbeda dengan apa yang Anda pikirkan.Hanya bekerja dengan fetchModule Nativescript dan menemukan solusi saya sendiri menggunakan manipulasi string. Tambahkan string kueri sedikit demi sedikit ke url. Berikut adalah contoh di mana kueri diteruskan sebagai objek json (kueri = {order_id: 1}):
Saya menguji ini pada beberapa parameter kueri dan itu berfungsi seperti pesona :) Semoga ini bisa membantu seseorang.
sumber
var paramsdate = 01 + '% s' + 12 + '% s' + 2012 + '% s';
request.get (" https://www.exampleurl.com?fromDate= " + paramsDate;
sumber