Go adalah bahasa yang kuat dan fleksibel untuk membangun aplikasi web. Itu bersih package memainkan peran penting dalam ekosistem Go.
Seperti kebanyakan bahasa pemrograman sisi server, Go dikirimkan dengan paket HTTP untuk berinteraksi dengan protokol HTTP. Paket Go yang relevan adalah http paket, sub-paket dari bersih kemasan.
Apakah Paket net/http itu?
Itu net/http package adalah salah satu pustaka standar di Go. Ini menyediakan serangkaian fungsi dan tipe lengkap untuk membangun klien HTTP, server, dan operasi berbasis HTTP lainnya. Ini termasuk:
- Fungsi untuk membuat permintaan HTTP.
- Menangani permintaan dan tanggapan.
- Melayani permintaan HTTP.
- Objek terkait seperti header dan cookie.
Itu net/http paket juga mendukung enkripsi TLS/SSL, HTTP/2, dan fitur canggih lainnya yang menjadikan paket alat penting untuk pengembang Go.
Banyak library dan framework Go yang populer, mulai dari toolkit web Gorilla hingga framework web Echo, dibangun di atas net/http kemasan.
Memulai Server HTTP Sederhana
Memulai server adalah salah satu operasi dasar yang perlu Anda pahami untuk bekerja dengan protokol HTTP.
Berikut adalah program untuk menjalankan server sederhana di Go:
kemasan utama
impor (
"fmt"
"net/http"
)// handler adalah handler permintaan-respons HTTP biasa di Go; rincian nanti
fungsipawang(w http. ResponseWriter, r *http. Meminta) {
// Fprintf memformat string menjadi penulis
fmt. Fprintf (w, "Halo Dunia!")
}
fungsiutama() {
http. HandleFunc("/", penangan)
http. MendengarkanDanMenyajikan(":8080", nol)
}
Itu pawang fungsi adalah penangan permintaan-respons yang khas untuk http kemasan. Fungsi ini menulis string "Hello, World!" ke penulis respons HTTP.
Saat menjalankan kode dan mengunjungi http://localhost: 8080/ di browser web, Anda akan melihat pesan "Hello, World!" string yang ditampilkan di browser Anda.
Menangani Permintaan dan Tanggapan
Anda dapat menangani permintaan masuk dengan HandleFunc metode dari http kemasan. Itu HandleFunc metode mengambil string rute dan fungsi penangan.
Itu http. Meminta metode adalah turunan dari permintaan yang masuk, dan Anda dapat menggunakan banyak metode dari instans Anda untuk berinteraksi dengan permintaan ke rute.
http. HandleFunc("/ pengguna", fungsi(w http. ResponseWriter, r *http. Meminta) {
mengalihkan R. Metode {
kasus"MENDAPATKAN":
// tangani permintaan GET
kasus"POS":
// menangani permintaan POST
bawaan:
http. Kesalahan (w, "Metode permintaan tidak valid", http. StatusMetodeTidakDiizinkan)
}
})
Kode di atas menggunakan http paket untuk menentukan fungsi penangan HTTP untuk /users rute. Fungsi penangan mendengarkan permintaan HTTP yang masuk pada rute dan memprosesnya berdasarkan metode permintaan (mis., MENDAPATKAN, POS, dll.)
Fungsi handler mengambil ResponseWriter Dan Meminta metode sebagai argumen. Itu ResponseWriter adalah antarmuka yang membantu penangan menulis data sebagai respons terhadap klien, dan Meminta adalah struct yang berisi informasi tentang permintaan yang masuk, seperti metode HTTP, URL, header, dll.
Fungsi handler di atas menggunakan a mengalihkan pernyataan untuk menentukan metode permintaan dan menjalankan blok kode yang berbeda berdasarkan metode. Jika metodenya MENDAPATKAN, pawang akan menangani MENDAPATKAN meminta. Jika tidak, metodenya adalah POS; itu akan menangani POS meminta.
Jika metodenya adalah yang lain, itu akan mengirim http. Kesalahan dengan pesan "Metode permintaan tidak valid" dan a StatusMetodeTidakDiizinkanKode status HTTP kepada klien.
Anda dapat menulis kembali string ke klien menggunakan Menulis metode instance penulis Anda yang mengambil sepotong string byte dan menulis string.
w. Menulis([]byte("Halo Dunia!"))
Anda dapat menggunakan WriteHeader metode Anda ResponseWriter contoh untuk menulis header ke klien.
w. WriteHeader (http. StatusOK)
Bekerja Dengan HTTP Middleware
Middleware terdiri dari fungsi-fungsi yang mencegat permintaan HTTP yang masuk untuk operasi sebelum permintaan melanjutkan ke fungsi penangan berikutnya.
Berikut adalah contoh pencatatan fungsi penangan middleware di Go:
fungsiloggingMiddleware(berikutnya http. Pawang)http.Pawang {
kembali http. HandlerFunc(fungsi(w http. ResponseWriter, r *http. Meminta) {
// mencatat permintaan
Berikutnya. Sajikan HTTP (w, r)
// catat responsnya
})
}
Itu loggingMiddleware fungsi menerima penangan HTTP dan mengembalikan penangan HTTP baru. Handler HTTP yang dikembalikan adalah fungsi anonim yang menerima penulis respons HTTP dan permintaan HTTP. Fungsi mencatat permintaan dan memanggil Sajikan HTTP metode pada Berikutnya Penangan HTTP, meneruskan penulis respons dan permintaan sebagai argumen.
Anda dapat menangani fungsi middleware dengan Menangani metode dari http kemasan. Itu Menangani metode mengambil rute dan fungsi middleware.
http. Menangani("/", loggingMiddleware (http. HandlerFunc (penangan)))
Pengalihan Dengan Paket HTTP
Pengalihan adalah operasi populer untuk aplikasi web yang mengarahkan pengguna ke sumber daya atau halaman web lain.
Anda dapat mengalihkan ke halaman web lain menggunakan Redirect metode dari http kemasan.
http. Arahkan ulang (w, r, " http://example.com", http. StatusPindahPermanen)
Itu Redirect metode mengambil di ResponseWriter Dan Meminta instance, URL halaman baru, dan kode status untuk pengalihan.
Anda Dapat Membuat API Kompleks di Go
Itu http package adalah alat yang ampuh dan fleksibel untuk membangun API yang kompleks. Anda dapat menggunakan perpustakaan standar kaya Go dan lainnya yang kuat paket pihak ketiga untuk menambahkan fungsionalitas ke API Anda, seperti konektivitas database dan dukungan untuk web yang berbeda kerangka kerja.
Dengan Go, Anda dapat membuat API yang dapat diskalakan dan berperforma tinggi yang menangani lalu lintas permintaan yang signifikan dan tugas pemrosesan data yang rumit dengan mudah.