Apakah url seperti http://example.com/foo?bar
valid?
Saya mencari tautan ke sesuatu yang resmi yang mengatakan satu atau lain cara. Jawaban ya / tidak sederhana atau bukti anekdotal tidak akan memotongnya.
url
query-parameters
Conley Owens
sumber
sumber
Jawaban:
The URI RFC tidak mandat format untuk string. Meskipun diakui bahwa string kueri akan sering membawa pasangan nama-nilai, string tersebut tidak diharuskan (misalnya akan sering berisi URI lain).
HTML menetapkan bahwa formulir yang dikirimkan melalui HTTP GET harus menyandikan nilai formulir sebagai pasangan nama-nilai dalam formulir "? Key1 = value1 & key2 = value2 ..." (disandikan dengan benar). Parsing string kueri hingga ke kode sisi server (mis. Mesin Java servlet).
Anda tidak mengidentifikasi kerangka sisi server apa yang Anda gunakan, jika ada, tetapi ada kemungkinan bahwa kerangka sisi server Anda dapat menganggap string kueri akan selalu berada dalam pasangan nilai-nama dan mungkin tersedak pada string kueri yang tidak dalam format itu (mis
?bar
.). Jika kode kustom Anda sendiri menguraikan string kueri, Anda hanya perlu memastikan Anda menangani format string kueri itu. Jika ini kerangka kerja, Anda harus berkonsultasi dengan dokumentasi Anda atau cukup mengujinya untuk melihat bagaimana penanganannya.sumber
isindex
magicname
dari HTML5 memungkinkan mengirimkan query string tanpa kunci-nilai Format stackoverflow.com/a/37579004/895245Mereka benar-benar valid. Anda bisa menganggap mereka setara dengan pria berotot besar yang berdiri diam di belakang pembawa pesan massa. Pria itu tidak memiliki nama dan tidak berbicara, tetapi kehadirannya hanya menyampaikan informasi.
sumber
"Skema" http "digunakan untuk menemukan sumber daya jaringan melalui protokol HTTP. Bagian ini mendefinisikan sintaks dan semantik khusus skema untuk URL http." http://www.w3.org/Protocols/rfc2616/rfc2616.html
Jadi ya, semuanya valid setelah tanda tanya. Server Anda mungkin menafsirkan secara berbeda, tetapi secara anekdot , Anda dapat melihat beberapa bahasa memperlakukannya sebagai nilai boolean yang benar jika terdaftar.
sumber
Ya itu benar.
Jika seseorang hanya ingin memeriksa apakah parameternya ada atau tidak, ini adalah salah satu cara untuk melakukannya.
sumber
Spesifikasi URI
Satu-satunya bagian yang relevan dari spesifikasi URI adalah untuk mengetahui segala sesuatu antara yang pertama
?
dan yang pertama#
sesuai dengan definisi permintaan. Itu dapat menyertakan karakter seperti[:/.?]
. Ini berarti bahwa string kueri seperti?bar
, atau?ten+green+apples
valid.Temukan RFC 3986 di sini
Spesifikasi HTML
isindex
tidak berarti HTML5.Ini disediakan usang untuk digunakan sebagai elemen pertama dalam bentuk saja, dan mengirimkan tanpa nama.
Isindex terakhir kali didukung adalah HTML3 . Ini digunakan dalam HTML5 adalah untuk memberikan kompatibilitas mundur lebih mudah.
Dukungan di perpustakaan
Dukungan di perpustakaan untuk format URI ini bervariasi namun beberapa perpustakaan memang menyediakan dukungan warisan untuk memudahkan penggunaan
isindex
.Perl URI.pm (dukungan khusus)
Beberapa perpustakaan seperti Perl URI menyediakan metode parsing struktur semacam ini
Node.js
url
(tidak ada dukungan khusus)Sebagai contoh lain yang jauh lebih sering,
node.js
mengambil rute normal dan memudahkan penguraian jugaparseQueryString
)Sebagian besar parsing URI API lainnya mengikuti sesuatu yang mirip dengan ini.
parse_url
, mengikuti implementasi serupa tetapi hanya mengembalikan string untuk kueri. Mengurai menjadi objekk=>v
membutuhkanparse_string()
sumber
Itu valid: lihat Wikipedia , RFC 1738 (3.3. HTTP) , RFC 3986 (3. Komponen Sintaks) .
sumber
isindex
sihir usangname
dari HTML5Fitur usang ini memungkinkan pengiriman formulir untuk menghasilkan URL seperti itu, memberikan bukti lebih lanjut bahwa itu valid untuk HTML. Misalnya:
menghasilkan URL jenis:
Standar: https://www.w3.org/TR/html5/forms.html#naming-form-controls:-the-name-attribute
isindex
Namun sudah usang seperti yang disebutkan di: https://stackoverflow.com/a/41689431/895245sumber
Seperti semua jawaban lain yang dijelaskan, ini sangat valid untuk memeriksa, khususnya untuk hal-hal baik boolean
Berikut adalah fungsi sederhana untuk mendapatkan string kueri berdasarkan nama:
dan sekarang Anda ingin memeriksa apakah string kueri yang Anda cari ada atau tidak, Anda dapat melakukan hal sederhana seperti:
yang
exampleQueryString
akanfalse
jika fungsi tidak dapat menemukan string, jika tidak akantrue
.sumber