Giới thiệu về Gói HTTP của Go
Go là một ngôn ngữ mạnh mẽ và linh hoạt để xây dựng các ứng dụng web. Các net gói đóng một vai trò thiết yếu trong hệ sinh thái của Go.
Giống như hầu hết các ngôn ngữ lập trình phía máy chủ, Go cung cấp gói HTTP để tương tác với giao thức HTTP. Gói Go có liên quan là http gói, một gói con của net bưu kiện.
Mục Lục
Gói net/http là gì?
Các mạng/http gói là một trong những thư viện tiêu chuẩn trong Go. Nó cung cấp một bộ đầy đủ các chức năng và kiểu để xây dựng máy khách, máy chủ HTTP và các hoạt động dựa trên HTTP khác. Bao gồm các:
- Các chức năng để thực hiện các yêu cầu HTTP.
- Xử lý yêu cầu và phản hồi.
- Phục vụ các yêu cầu HTTP.
- Các đối tượng liên quan như tiêu đề và cookie.
Các mạng/http gói cũng hỗ trợ mã hóa TLS/SSL, HTTP/2 và các tính năng nâng cao khác làm cho gói trở thành một công cụ thiết yếu cho các nhà phát triển Go.
Nhiều thư viện và khung phổ biến của Go, từ bộ công cụ web Gorilla đến khung web Echo, được xây dựng dựa trên mạng/http bưu kiện.
Khởi động một máy chủ HTTP đơn giản
Khởi động máy chủ là một trong những thao tác cơ bản bạn cần hiểu để làm việc với giao thức HTTP.
Đây là một chương trình để chạy một máy chủ đơn giản trong Go:
package mainimport (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}
func main() {
http.HandleFunc("https://www.smartreviewaz.com/", handler)
http.ListenAndServe(":8080", nil)
}
Các xử lý là một trình xử lý yêu cầu-phản hồi điển hình cho http bưu kiện. Hàm này viết chuỗi “Xin chào, Thế giới!” cho người viết phản hồi HTTP.
Khi chạy mã và truy cập http://localhost:8080/ trong trình duyệt web, bạn sẽ thấy thông báo “Xin chào, Thế giới!” chuỗi hiển thị trong trình duyệt của bạn.
Xử lý yêu cầu và phản hồi
Bạn có thể xử lý các yêu cầu đến với xử lý chức năng phương pháp của http bưu kiện. Các xử lý chức năng phương thức nhận một chuỗi tuyến đường và một hàm xử lý.
Các http.Request phương thức là một phiên bản của yêu cầu đến và bạn có thể sử dụng nhiều phương thức của phiên bản của mình để tương tác với các yêu cầu đối với tuyến đường.
http.HandleFunc("/users", func(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case "GET":
case "POST":
default:
http.Error(w, "Invalid request method", http.StatusMethodNotAllowed)
}
})
Đoạn mã trên sử dụng http gói để xác định chức năng xử lý HTTP cho /người dùng tuyến đường. Hàm xử lý lắng nghe các yêu cầu HTTP đến trên tuyến và xử lý chúng dựa trên phương thức yêu cầu (ví dụ: ĐƯỢC, BƯU KIỆNvân vân.)
Hàm xử lý lấy Phản HồiWriter và Lời yêu cầu các phương thức làm đối số. Các Phản HồiWriter là một giao diện giúp trình xử lý ghi dữ liệu dưới dạng phản hồi cho máy khách và Lời yêu cầu là một cấu trúc chứa thông tin về yêu cầu đến, chẳng hạn như phương thức HTTP, URL, tiêu đề, v.v.
Hàm xử lý ở trên sử dụng một công tắc để xác định phương thức yêu cầu và chạy các khối mã khác nhau dựa trên phương thức. Nếu phương pháp là ĐƯỢCtrình xử lý sẽ xử lý ĐƯỢC lời yêu cầu. Mặt khác, phương pháp này là BƯU KIỆN; nó sẽ xử lý BƯU KIỆN lời yêu cầu.
Nếu phương thức là bất cứ điều gì khác, nó sẽ gửi một Lỗi HTTP với thông báo “Phương thức yêu cầu không hợp lệ” và Trạng thái Phương thứcKhông được phép mã trạng thái HTTP cho máy khách.
Bạn có thể viết lại các chuỗi cho khách hàng bằng cách sử dụng Viết phương thức của thể hiện trình soạn thảo của bạn lấy một lát chuỗi byte và ghi chuỗi.
w.Write([]byte("Hello, World!"))
Bạn có thể dùng Viết tiêu đề phương pháp của bạn Phản HồiWriter ví dụ để viết tiêu đề cho khách hàng.
w.WriteHeader(http.StatusOK)
Làm việc với phần mềm trung gian HTTP
Phần mềm trung gian bao gồm các chức năng chặn các yêu cầu HTTP đến cho các hoạt động trước khi yêu cầu chuyển sang chức năng xử lý tiếp theo.
Đây là một ví dụ về ghi nhật ký chức năng xử lý phần mềm trung gian trong Go:
func loggingMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
next.ServeHTTP(w, r)
})
}
Các khai thác gỗMiddleware hàm nhận một trình xử lý HTTP và trả về một trình xử lý HTTP mới. Trình xử lý HTTP được trả về là một hàm ẩn danh nhận một trình ghi phản hồi HTTP và một yêu cầu HTTP. Hàm ghi lại yêu cầu và gọi Phục vụHTTP phương pháp trên tiếp theo Trình xử lý HTTP, chuyển vào trình viết phản hồi và yêu cầu làm đối số.
Bạn có thể xử lý các chức năng của phần mềm trung gian với Xử lý phương pháp của http bưu kiện. Các Xử lý phương thức đảm nhận tuyến đường và chức năng phần mềm trung gian.
http.Handle("https://www.smartreviewaz.com/", loggingMiddleware(http.HandlerFunc(handler)))
Chuyển hướng với gói HTTP
Chuyển hướng là một hoạt động phổ biến cho các ứng dụng web giới thiệu người dùng đến các tài nguyên hoặc trang web khác.
Bạn có thể chuyển hướng đến một trang web khác bằng cách sử dụng chuyển hướng phương pháp của http bưu kiện.
http.Redirect(w, r, "http://example.com", http.StatusMovedPermanently)
Các chuyển hướng phương pháp đưa vào Phản HồiWriter và Lời yêu cầu phiên bản, URL trang mới và mã trạng thái cho chuyển hướng.
Bạn có thể xây dựng các API phức tạp trong Go
Các http gói là một công cụ mạnh mẽ và linh hoạt để xây dựng các API phức tạp. Bạn có thể sử dụng thư viện tiêu chuẩn phong phú của Go và các gói bên thứ ba mạnh mẽ khác để thêm chức năng vào API của mình, chẳng hạn như kết nối cơ sở dữ liệu và hỗ trợ cho các khung web khác nhau.
Với Go, bạn có thể xây dựng các API có khả năng mở rộng, hiệu suất cao để xử lý lưu lượng yêu cầu quan trọng và các tác vụ xử lý dữ liệu phức tạp một cách dễ dàng.