Ky 2.0: Bản cập nhật lớn cho Fetch API với Hooks cải tiến, Timeout thông minh và Validation tích hợp

Phần mềm18 tháng 6, 2026·4 phút đọc

Ky 2.0, phiên bản mới của thư viện HTTP client JavaScript dựa trên Fetch API, đã ra mắt với những cải tiến đáng kể về quản lý hook, xử lý timeout và URL. Bản cập nhật tích hợp khả năng xác thực phản hồi (schema validation) và hướng dẫn di chuyển từ các phiên bản cũ, định vị mình là giải pháp thay thế nhẹ nhàng cho Axios.

Ky 2.0: Bản cập nhật lớn cho Fetch API với Hooks cải tiến, Timeout thông minh và Validation tích hợp

Ky 2.0: Bản cập nhật lớn cho Fetch API với Hooks cải tiến, Timeout thông minh và Validation tích hợp

Ky, một thư viện HTTP client nhỏ gọn và tinh tế được xây dựng trên nền tảng Fetch API bởi Sindre Sorhus, đã chính thức phát hành phiên bản 2.0. Đây là bản cập nhật chính đầu tiên sau nhiều năm, mang đến những thay đổi lớn về hệ thống hooks, quản lý timeout thông minh hơn, xử lý URL sạch sẽ hơn và tính năng xác thực phản hồi tích hợp sẵn.

Cải tiến hệ thống Hooks

Ky 2.0 đã thống nhất mọi hook xung quanh một đối tượng trạng thái duy nhất. Các hook như beforeRequest, afterResponse, beforeRetrybeforeError hiện nay đều nhận cùng một đối số {request, options, retryCount, ...} thay vì các tham số riêng lẻ. Điều này giúp API nhất quán và dễ dàng mở rộng trong tương lai.

Một hook mới tên là init được thêm vào để chạy trước mọi thứ khác, và beforeError giờ đây sẽ kích hoạt cho mọi loại lỗi chứ không chỉ riêng HTTPError.

Quản lý Timeout thông minh hơn

Cơ chế timeout cũng được thiết kế lại. Bên cạnh timeout cho từng lần thử (per-attempt), một tùy chọn mới là totalTimeout đã được thêm vào để giới hạn tổng thời gian của toàn bộ thao tác, bao gồm cả các lần thử lại và độ trễ. Việc xử lý thử lại (retry) cũng chặt chẽ hơn với lớp NetworkError chuyên biệt; tính năng tự động retry giờ đây chỉ dành cho các lỗi mạng thực sự như lỗi DNS hoặc kết nối bị từ chối, thay vì các lỗi lập trình.

Xử lý URL rõ ràng hơn

Việc xử lý URL, vốn là nguồn gây nhầm lẫn từ trước, nay đã được chia thành hai tùy chọn rõ ràng hơn. Tùy chọn prefixUrl cũ đã được đổi tên thành prefix và giờ cho phép dấu gạch chéo ở đầu đầu vào. Đồng thời, một tùy chọn mới là baseUrl được thêm vào để tuân theo quy tắc giải quyết URL chuẩn.

Xác thực Schema tích hợp

Bản phát hành này mang đến khả năng xác thực Standard Schema cho phương thức .json(), cho phép các nhà phát triển xác thực và định kiểu phản hồi bằng các thư viện như Zod hay Valibot. Ngoài ra, HTTPError hiện nay hiển thị thuộc tính data đã được phân tích sẵn, giúp khắc phục rò rỉ tài nguyên và dễ dàng truy cập nội dung lỗi mà không cần gọi thêm một lần await thứ hai.

Phản hồi từ cộng đồng

Trên Hacker News, người bảo trì Seth Holladay mô tả công việc tiền phát hành là mang lại "nhiều cải thiện về chất lượng cuộc sống".

"Nhiều cải thiện về chất lượng cuộc sống. Timeout và hooks đã được thiết kế lại. Các điểm kỳ quặc liên quan đến base URL cho các instance tùy chỉnh đã được giải quyết. Mọi lỗi đã biết đều đã được sửa."

Khi được hỏi về sự so sánh với Axios, ông trả lời rằng:

"Ky được viết để sử dụng fetch ngay từ đầu, trong khi Axios cố gắng thích nghi với fetch, điều này không phải lúc nào cũng hoạt động tốt. Chúng tôi cũng có hỗ trợ TypeScript tốt hơn nhiều, bao gồm cả xác thực schema tích hợp với suy luận kiểu."

Trên Reddit, các nhà phát triển đã khen ngợi Ky là "fetch++", thực hiện những gì họ thường phải viết wrapper cho fetch nhưng một cách tiện lợi và đã được kiểm thử kỹ lưỡng.

Yêu cầu và Hướng dẫn di chuyển

Ky 2.0 hiện yêu cầu Node.js 22. Các callback của hook phải chuyển sang dạng đối tượng trạng thái duy nhất. Phương thức .json() sẽ ném lỗi (throw) khi phản hồi rỗng hoặc 204 thay vì trả về chuỗi rỗng. searchParams giờ sẽ hợp nhất với bất kỳ tham số truy vấn nào đã có trong URL. Các ghi chú phát hành đi kèm hướng dẫn di chuyển đầy đủ với ví dụ trước và sau cho từng thay đổi.

Ky là một HTTP client mã nguồn mở được bảo trì bởi Sindre Sorhus, Seth Holladay và Szymon Marczak. Chỉ với dung lượng vài kilobyte và hoạt động trên nhiều môi trường như trình duyệt, Node.js, Bun và Deno, Ky định vị mình là một giải pháp thay thế cho Axios nhẹ nhàng hơn và tận dụng tối đa tính năng gốc của fetch.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗