Put và POST khác nhau như thế nào

REST - HTTP POST so với HTTP PUT

Dường như luôn có một số nhầm lẫn về thời điểm sử dụng HTTP POST so với phương thức HTTP PUT cho các dịch vụ REST. Hầu hết các nhà phát triển sẽ cố gắng liên kết các hoạt động CRUD trực tiếp với các phương thức HTTP. Tôi sẽ tranh luận rằng điều này là không chính xác và người ta không thể chỉ đơn giản kết hợp các khái niệm CRUD với các phương thức HTTP. Đó là:

  • Create => HTTP PUT
  • Retrieve => HTTP GET
  • Update => HTTP POST
  • Delete => HTTP DELETE

Đúng là R (etrieve) và D (elete) của các hoạt động CRUD có thể được ánh xạ trực tiếp đến các phương thức HTTP GET và DELETE tương ứng. Tuy nhiên, sự nhầm lẫn nằm trong các phép toán C (reate) và U (pdate). Trong một số trường hợp, người ta có thể sử dụng PUT để tạo trong khi trong các trường hợp khác, POST sẽ được yêu cầu. Sự mơ hồ nằm trong định nghĩa của phương thức HTTP PUT so với phương thức HTTP POST.

Thông số kỹ thuật cho POST so với PUT

Theo các thông số kỹ thuật HTTP 1.1, các phương thức GET, HEAD, DELETE và PUT phải là giá trị trung tâm và phương thức ĐĂNG không phải là phương thức đơn vị tính. Điều đó có nghĩa là một hoạt động là không quan trọng nếu nó có thể được thực hiện trên một tài nguyên một lần hoặc nhiều lần và luôn trả về cùng một trạng thái của tài nguyên đó. Trong khi đó, một hoạt động không phải là một phép toán có thể trả về một trạng thái đã sửa đổi của tài nguyên từ một yêu cầu này sang một yêu cầu khác. Do đó, trong một hoạt động không phải là đơn vị, không có gì đảm bảo rằng một người sẽ nhận được cùng một trạng thái của một tài nguyên.

Dựa trên định nghĩa idempotent ở trên, việc tôi sử dụng phương thức HTTP PUT so với sử dụng phương thức HTTP POST cho các dịch vụ REST là:

Sử dụng phương thức HTTP PUT khi:

  • Máy khách yêu cầu thực thể kín được lưu trữ theo Yêu cầu-URI được cung cấp. Nếu URI yêu cầu đề cập đến một tài nguyên đã tồn tại, thực thể đính kèm NÊN được coi là phiên bản đã sửa đổi của một trong những phiên bản nằm trên máy chủ gốc.
  • Máy chủ sẽ cung cấp một số thông tin liên quan đến tài nguyên mới được tạo ra. Ví dụ, lấy một hệ thống đăng nhập. Một mục mới trong nhật ký rất có thể sẽ có
    lược đồ đánh số được xác định ở phía máy chủ. Khi tạo mục nhập nhật ký mới, số thứ tự mới sẽ được máy chủ xác định chứ không phải bởi máy khách.
  • Khi sửa đổi tài nguyên, máy chủ sẽ cung cấp thông tin như trạng thái tài nguyên hoặc ngày cập nhật. Một lần nữa trong trường hợp này không phải tất cả các thông tin đã được cung cấp bởi khách hàng và tài nguyên sẽ thay đổi từ một yêu cầu sửa đổi sang yêu cầu tiếp theo. Do đó một hoạt động không cần thiết.
  • Có thể được sử dụng cho cả việc tạo và / hoặc cập nhật hồ sơ

Các hoạt động này có thể được thực hiện nhiều lần với cùng một kết quả. Đó là tài nguyên sẽ không bị thay đổi bằng cách yêu cầu thao tác nhiều lần. Do đó, một hoạt động idempotent thực sự.

Sử dụng phương thức HTTP POST khi:

  • Máy khách bao gồm tất cả các khía cạnh của tài nguyên, bao gồm mã định danh duy nhất để nhận dạng duy nhất tài nguyên. Ví dụ: tạo một nhân viên mới.
  • Máy khách yêu cầu máy chủ gốc chấp nhận thực thể được đính kèm trong yêu cầu dưới dạng một cấp dưới mới của tài nguyên được xác định bởi Yêu cầu-URI trong Dòng yêu cầu.
  • Khách hàng cung cấp tất cả thông tin cho tài nguyên để có thể sửa đổi tài nguyên đó. Điều này ngụ ý rằng phía máy chủ không cập nhật bất kỳ khía cạnh nào của tài nguyên (chẳng hạn như ngày cập nhật).
  • Chỉ được sử dụng để tạo bản ghi mới.

Kết luận: HTTP POST so với PUT

Không trực tiếp tương quan và ánh xạ các hoạt động CRUD với các phương thức HTTP cho các dịch vụ REST. Việc sử dụng phương thức HTTP PUT so với phương thức HTTP POST phải dựa trên
trên khía cạnh không cần thiết của hoạt động đó. Nghĩa là, nếu hoạt động không có giá trị, thì hãy sử dụng phương thức HTTP POST. Nếu hoạt động không phải là không cần thiết, thì hãy sử dụng phương thức HTTP PUT.

Xem cách FileCatalyst phù hợp với tổ chức của bạn

FileCatalyst là một giải pháp tăng tốc tệp giúp sắp xếp hợp lý và bảo mật việc truyền dữ liệu của bạn, bất kể kích thước hay khoảng cách. Bắt đầu dùng thử để xem FileCatalyst có thể giúp ích gì cho tổ chức của bạn ngay hôm nay.

Bắt đầu dùng thử miễn phí

Đọc liên quan

Thông tin thêm về HTTP & Tăng tốc tệp

REST - Tại sao Mã trạng thái HTTP lại quan trọng

Hơn cả tốc độ: Các lợi ích khác của việc tăng tốc

Tăng tốc truyền từ môi trường .net