URL (Uniform Resource Locators) adalah salah satu infrastruktur internet yang paling penting. Saat Anda membangun aplikasi web, Anda harus memanipulasi URL untuk menemukan dan mengambil sumber daya.
Saat Anda membuat aplikasi web yang lebih canggih, Anda harus bekerja dengan URL pada tingkat yang lebih mendetail. Anda mungkin perlu mengidentifikasi skema, nama host, jalur, dan parameter kueri. Anda juga perlu mengetahui cara menyandikan dan mendekode URL sehingga Anda dapat menangani karakter khusus dan menjaga keamanan aplikasi web Anda.
Pustaka standar Go menyediakan paket net/url untuk menangani URL dan komponen URL.
Paket URL
Itu url package menyediakan fungsi dan fitur yang komprehensif untuk digunakan URL dan bagian-bagiannya yang terpisah. Ini menyediakan fungsi untuk mem-parsing, membangun, menyandikan, dan mendekode URL, membuat paket berguna untuk pengembangan web.
Beberapa fitur utama dari url paket adalah kemampuan untuk mengurai URL menjadi komponen individual untuk manipulasi dan konstruksi URL untuk permintaan HTTP. Itu url paket juga menyediakan a URL struktur dengan a Mengurai metode untuk mem-parsing string ke dalam URL.
Ini dia url. URL model struktur:
kemasan utama
jenis URL struct {
// Skema adalah skema protokol dari URL,
// seperti "http" atau "https"
Skema rangkaian// Buram digunakan untuk menyimpan data buram
// yang harus dikodekan dalam URL
Buram rangkaian// Pengguna menyimpan informasi tentang pengguna yang membuat permintaan,
// seperti nama pengguna dan kata sandi
Pengguna *Info pengguna// Host adalah nama host atau alamat IP
// dari server yang menghosting URL
Tuan rumah rangkaian// Jalur adalah jalur URL di server
Jalur rangkaian// RawPath adalah yang asli,
// jalur URL yang disandikan
RawPath rangkaian// ForceQuery menunjukkan apakah URL harus menyertakan string kueri
// bahkan jika itu kosong
ForceQuery bool// RawQuery adalah yang asli,
// string kueri yang disandikan dari URL
RawQuery rangkaian// Fragmen adalah pengidentifikasi fragmen dari URL,
// digunakan untuk menautkan ke elemen tertentu pada halaman
Pecahan rangkaian
// RawFragment adalah yang asli,
// pengidentifikasi fragmen yang disandikan dari URL
RawFragment rangkaian
}
Mengetahui cara mengakses berbagai bagian dari URL struct dapat berguna untuk tugas-tugas seperti validasi.
Parsing URL Menggunakan Fungsi Parse
Itu Mengurai fungsi dari url package menyediakan fungsionalitas untuk mem-parsing string URL ke dalam komponen Individual. Itu Mengurai fungsi mengambil satu URL sebagai argumen dan mengembalikan pointer ke url. URL struct yang berisi data parsing dari URL dan jenis kesalahan.
Inilah cara Anda dapat menggunakan Mengurai berfungsi untuk mengambil elemen dari URL.
impor (
"fmt"
"bersih/url"
)fungsiutama() {
// URL yang ingin Anda parse
contohURL := " https://www.example.com/path? param1=nilai1¶m2=nilai2"// Parsing URL
parsedURL, err := url. Urai (contohURL)jika salah!= nol {
fmt. Cetak (err)
kembali
}
// Cetak semua bidang URL
fmt. Cetak("Skema:", parsedURL.Skema)
fmt. Cetak("Buram:", parsedURL.Opaque)
fmt. Cetak("Pengguna:", parsedURL.Pengguna)
fmt. Cetak("Tuan rumah:", parsedURL.Host)
fmt. Cetak("Jalur:", parsedURL.Path)
fmt. Cetak("RawPath:", parsedURL.RawPath)
fmt. Cetak("Permintaan Paksa:", parsedURL.ForceQuery)
fmt. Cetak("RawQuery:", parsedURL.RawQuery)
fmt. Cetak("Pecahan:", parsedURL.Fragmen)
fmt. Cetak("Fragmen Mentah:", parsedURL.RawFragment)
}
Itu contohURL variabel menyimpan URL lengkap, tidak diurai, dan Mengurai fungsi mem-parsing konten dari contohURL variabel dan mengembalikan URL yang diuraikan. Program diakhiri dengan serangkaian panggilan ke Println untuk menunjukkan bidang individu dari URL struct.
Fungsi parse tidak memeriksa apakah URL benar-benar ada, hanya mem-parsing URL secara sintaksis. Anda dapat menggunakan http kemasan untuk membuat permintaan GET ke URL dan memeriksa responsnya:
impor (
"fmt"
"net/http"
)fungsiutama() {
// URL yang ingin Anda periksa
contohURL := " https://www.example.com"// Buat permintaan HTTP GET ke URL
tanggapan, err := http. Dapatkan (contohURL)jika salah!= nol {
fmt. Cetak (err)
kembali
}
menunda tanggapan. Tubuh. Menutup()
// Periksa kode status respons
jika tanggapan. Kode Status == http. StatusOK {
fmt. Cetak("URL ada.")
} kalau tidak {
fmt. Cetak("URL tidak ada.")
}
}
Itu utama fungsi membuat a MENDAPATKAN permintaan ke contohURL menggunakan Mendapatkan fungsi dari http kemasan. Fungsi itu mengembalikan contoh respons dan jenis kesalahan. Program diakhiri dengan sebuah jika pernyataan untuk memvalidasi keberadaan situs web dengan memeriksa Kode status HTTP melawan StatusOke konstan dari http kemasan.
Pendekatan ini memungkinkan Anda mengambil tindakan berdasarkan hasil pemeriksaan, seperti mengarahkan ulang pengguna ke halaman lain, menampilkan pesan kesalahan, atau mencoba kembali permintaan setelah tertentu periode.
Encoding dan Decoding Parameter URL
Itu url paket menyediakan Menyandi metode untuk menyandikan parameter URL. Itu Menyandi fungsi persen-menyandikan karakter dan spasi khusus dalam parameter URL.
impor (
"fmt"
"bersih/url"
)fungsiutama() {
// buat url baru. Struktur nilai
parameter := url. Nilai{}// menambahkan nilai ke struct
parameter. Menambahkan("nama", "John Smith")
parameter. Menambahkan("usia", "30")
parameter. Menambahkan("jenis kelamin", "pria")// menyandikan struct menjadi string
encodedParams := params. Menyandi()
fmt. Println (params yang disandikan)
// Keluaran: "usia=30&jenis kelamin=laki-laki&nama=John+Smith"
}
Itu utama fungsi menciptakan yang baru Nilai struct contoh dari url paket, dan Menambahkan metode instance struct menambahkan pasangan kunci-nilai data ke instance struct.
Itu Menyandi metode mengonversi pasangan nilai kunci ke format string URL "key1=nilai1&key2=nilai2&key3=nilai3".
Anda dapat mendekode string URL yang disandikan dengan ParseQuery fungsi dari url kemasan.
impor (
"fmt"
"bersih/url"
)fungsiutama() {
// string parameter URL yang disandikan
encodedParams := "usia=30&jenis kelamin=pria&nama=John+Smith"
// parsing string yang disandikan ke dalam url. Struktur nilai
params, err := url. ParseQuery (params yang disandikan)
jika salah!= nol {
fmt. Cetak (err)
}
// cetak struct
fmt. Println (params)
// Keluaran: peta[umur:[30] jenis kelamin:[laki-laki] nama:[John Smith]]
}
Itu encodedParameter variabel adalah string URL yang disandikan. Itu ParseQuery fungsi mengambil di encodedParameter variabel dan mengembalikan string URL yang didekode dan kesalahan.
Paket Go Ini Dapat Membawa Game Perutean Web Anda ke Tingkat Selanjutnya
URL yang Anda gunakan untuk laman aplikasi web Anda berkontribusi pada kinerja dan keterlihatannya di mesin telusur. Perutean web adalah proses mengarahkan permintaan yang masuk ke fungsi penangan yang sesuai berdasarkan URL.
Anda dapat merutekan menggunakan paket http atau paket pihak ketiga populer seperti Gorilla Mux, Chi, Pat, atau Httprouter. Paket-paket ini membuat perutean lebih mudah daripada paket http dengan menghilangkan beberapa kerumitannya.