1 điểm bởi GN⁺ 2023-10-17 | 1 bình luận | Chia sẻ qua WhatsApp
  • Bài viết về việc cải thiện khả năng khớp mẫu của bộ ghép kênh phục vụ HTTP mặc định trong gói net/http của Go 1.22
  • Bộ ghép kênh hiện có (http.ServeMux) chỉ cung cấp khớp đường dẫn cơ bản, nên cần dùng thư viện 3rd party cho các tính năng nâng cao
  • Bộ ghép kênh mới của Go 1.22 cung cấp khả năng khớp nâng cao, thu hẹp khoảng cách với các gói 3rd party
  • Bộ ghép kênh mới (mux) cho phép chỉ định rõ HTTP method như một phần của mẫu và hỗ trợ khớp wildcard trong các thành phần của đường dẫn
  • Bài viết đưa ra ví dụ sử dụng mux mới, bao gồm cả cách xử lý xung đột tiềm ẩn giữa các mẫu khác nhau
  • Tài liệu ServeMux mới giải thích các quy tắc ưu tiên cho mẫu và các xung đột có thể xảy ra
  • Bài viết cũng xem lại các ví dụ trong loạt bài về máy chủ REST trong Go và so sánh mux stdlib mới với gorilla/mux
  • mux mới trong Go 1.22 cho phép định tuyến tinh vi hơn, giảm nhu cầu phải đưa ra quyết định định tuyến bên trong handler
  • Tác giả tin rằng các cải tiến trong Go 1.22 sẽ thay đổi câu trả lời phổ biến cho câu hỏi "Nên dùng gói router nào?". Nhiều người sẽ thấy mux stdlib mới là đủ cho nhu cầu của họ
  • Tuy nhiên, một số lập trình viên Go vẫn có thể thích các gói 3rd party hoặc framework nhẹ như Gin. Chúng cung cấp router và các công cụ bổ sung để xây dựng web backend
  • Nhìn chung, tác giả xem các cải tiến trong Go 1.22 là một thay đổi tích cực đối với mọi người dùng Go, giúp thư viện chuẩn trở nên mạnh mẽ hơn và mang lại lợi ích cho toàn bộ cộng đồng

1 bình luận

 
GN⁺ 2023-10-17
Ý kiến Hacker News
  • Bài viết về định tuyến máy chủ HTTP mới trong Go 1.22.
  • Người dùng thấy khó hiểu về panic xảy ra khi hai route cùng khớp; đa số framework web sẽ dùng route khớp đầu tiên được đăng ký.
  • Việc dự án gorrila/mux bị lưu trữ rồi được khôi phục đã gây nhầm lẫn, nhưng một số người xem đây là minh chứng cho tính ổn định của dự án mã nguồn mở.
  • Có ý kiến chỉ trích cú pháp được đề xuất, một số người đề nghị dùng đối số thực thay vì tạo ra các chuỗi "ma thuật" để định nghĩa handler.
  • Một số người dùng không thích việc dùng tiền tố method ở dạng chuỗi, và thích tính an toàn kiểu của các method đặc thù theo động từ hơn.
  • Có thắc mắc về điều gì xảy ra khi route khớp nhưng method không khớp; câu trả lời là 405 cùng với header Allow được điền phù hợp.
  • Có ý kiến cho rằng người dùng có yêu cầu nâng cao nên cân nhắc các lựa chọn khác hoặc tự viết router riêng thay vì dùng sub-mux mặc định.
  • Một số người thích việc các đường dẫn chồng lấp được khớp theo thứ tự định nghĩa hơn là gây panic.
  • Có người không thích đề xuất này, đặc biệt là việc đưa phương thức yêu cầu HTTP vào URI.
  • Có chỉ trích nhắm vào ServeMux mặc định vì nó xử lý mọi thứ khi địa chỉ là tiền tố, và không có cách dễ dàng để xử lý khớp chính xác.
  • Tuy vậy, một số người xem cơ chế định tuyến mới là thay đổi tích cực, giúp giảm phụ thuộc bên ngoài và tăng năng suất.