HTTP methods
HTTP là viết tắt của Hypertext Transfer Protocol, là giao thức chuẩn để liên lạc giữa client và servers. Phương thức HTTP là các hành động mà client có thể yêu cầu từ servers, chẳng hạn như GET, POST, PUT, PATCH, DELETE và các hành động khác. Mỗi phương pháp có một ý nghĩa và mục đích cụ thể và các máy chủ sẽ phản hồi tương ứng. Ví dụ: GET được sử dụng để truy xuất dữ liệu từ servers, POST được sử dụng để tạo dữ liệu mới trên servers, PUT được sử dụng để thay thế dữ liệu hiện có trên servers, v.v.
API RESTful
REST là viết tắt của Representational State Transfer, là một bộ nguyên tắc và phương pháp hay nhất để thiết kế API web. API RESTful là các API web tuân theo các nguyên tắc REST, chẳng hạn như sử dụng phương thức HTTP để thực hiện các thao tác trên tài nguyên, sử dụng URL thống nhất và có ý nghĩa để xác định tài nguyên cũng như sử dụng các định dạng chuẩn để trao đổi dữ liệu, chẳng hạn như JSON hoặc XML. API RESTful hướng đến sự đơn giản, không trạng thái, có thể mở rộng và nhất quán.
PATCH và PUT
Một trong những thách thức phổ biến mà các nhà phát triển web gặp phải khi làm việc với API RESTful là cách cập nhật tài nguyên trên servers. Có hai phương thức HTTP chính có thể được sử dụng cho mục đích này: PATCH và PUT.
PATCH được sử dụng để áp dụng cập nhật một phần cho tài nguyên, nghĩa là chỉ những trường cần thay đổi mới được gửi trong nội dung yêu cầu.
PUT được sử dụng để thay thế toàn bộ tài nguyên bằng một cách thể hiện mới, nghĩa là tất cả các trường của tài nguyên đều được gửi trong body yêu cầu, ngay cả khi chúng không được sửa đổi.
Lợi ích khi sử dụng PATCH
Sử dụng PATCH có một số lợi thế so với việc sử dụng PUT để cập nhật tài nguyên.
Đầu tiên, nó có thể giảm lượng dữ liệu cần truyền giữa client và servers, điều này có thể cải thiện hiệu suất và hiệu quả của ứng dụng web.
Thứ hai, nó có thể tránh ghi đè hoặc mất dữ liệu có thể đã bị thay đổi bởi client hoặc quy trình khác, vì nó chỉ sửa đổi các trường được chỉ định trong yêu cầu.
Thứ ba, nó có thể cho phép cập nhật tài nguyên linh hoạt và chi tiết hơn vì nó có thể hỗ trợ các loại định dạng patch khác nhau, chẳng hạn như JSON patch hoặc JSON Merge Patch.
Hạn chế của PATCH
Tuy nhiên, sử dụng PATCH cũng có một số nhược điểm.
Đầu tiên, nó có thể làm tăng độ phức tạp và khó khăn trong việc triển khai và kiểm tra API web, vì nó yêu cầu servers phân tích cú pháp và áp dụng định dạng patch một cách chính xác, đồng thời xử lý mọi lỗi hoặc xung đột có thể phát sinh.
Thứ hai, nó có thể gây ra một số vấn đề về bảo mật và xác thực, vì nó có thể cho phép khách hàng sửa đổi các trường không nên thay đổi hoặc bỏ qua một số ràng buộc hoặc kiểm tra có thể được máy chủ thực thi.
Thứ ba, PATCH có thể tạo ra một số điểm không nhất quán và nhầm lẫn trong API web vì nó có thể không được tất cả servers hoặc client hỗ trợ hoặc có thể không tuân theo cùng một định dạng hoặc ngữ nghĩa.
Khi nào nên sử dụng PATCH hoặc PUT
Quyết định sử dụng PATCH hay PUT để cập nhật tài nguyên không phải là một câu trả lời dễ dàng vì nó phụ thuộc vào ngữ cảnh và yêu cầu của ứng dụng web cũng như API web.
Theo nguyên tắc chung, PATCH nên được sử dụng khi muốn cập nhật một phần và hiệu suất, tính đồng thời hoặc tính linh hoạt là mối quan tâm. Mặt khác, PUT có thể được sử dụng khi toàn bộ tài nguyên cần được thay thế và ưu tiên tính đơn giản, nhất quán hoặc bảo mật.