Sự khác biệt giữa các phương thức PUT, POST và PATCH trong giao thức HTTP là gì?
Sự khác biệt giữa các phương thức PUT, POST và PATCH trong giao thức HTTP là gì?
Câu trả lời:
Sự khác biệt giữa PUT, POST, GET, DELETE và PATCH IN HTTP Verbs:
Các động từ HTTP được sử dụng phổ biến nhất POST, GET, PUT, DELETE tương tự như các thao tác CRUD (Tạo, Đọc, Cập nhật và Xóa) trong cơ sở dữ liệu. Chúng tôi xác định những động từ HTTP trong vốn hợp cụ thể. Vì vậy, dưới đây là so sánh giữa chúng.
VĂN BẢN: Gửi một sửa đổi một phần cho tài nguyên. Nếu bạn chỉ cần cập nhật một trường cho tài nguyên, bạn có thể muốn sử dụng phương thức PATCH.
Lưu ý:
Vì POST, PUT, DELETE sửa đổi nội dung, các bài kiểm tra với Fiddler cho url bên dưới chỉ bắt chước các cập nhật. Nó không xóa hoặc sửa đổi thực sự. Chúng ta chỉ có thể xem các mã trạng thái để kiểm tra xem có chèn thêm, cập nhật, xóa hay không.
URL: http://jsonplaceholder.typicode.com/posts/
1) NHẬN:
GET là loại phương thức yêu cầu HTTP đơn giản nhất; một trình duyệt sử dụng mỗi khi bạn nhấp vào liên kết hoặc nhập URL vào thanh địa chỉ. Nó ra lệnh cho máy chủ truyền dữ liệu được xác định bởi URL đến máy khách. Dữ liệu không bao giờ được sửa đổi ở phía máy chủ do yêu cầu GET. Theo nghĩa này, một yêu cầu GET là chỉ đọc.
Kiểm tra với Fiddler hoặc PostMan: Chúng tôi có thể sử dụng Fiddler để kiểm tra phản hồi. Mở Fiddler và chọn tab Soạn. Chỉ định động từ và url như hiển thị bên dưới và nhấp vào Thực thi để kiểm tra phản hồi.
Động từ: NHẬN
url: http://jsonplaceholder.typicode.com/posts/
Phản hồi: Bạn sẽ nhận được phản hồi như:
"userId": 1, "id": 1, "title": "sunt aut ...", "cơ thể": "quia et suscipit ..."
Trong đường dẫn của Happy Happy (hoặc không có lỗi), GET trả về một đại diện bằng XML hoặc JSON và mã phản hồi HTTP là 200 (OK). Trong trường hợp lỗi, nó thường trả về 404 (KHÔNG TÌM KIẾM) hoặc 400 (BẮT BUỘC YÊU CẦU).
2) BÀI:
Động từ POST chủ yếu được sử dụng để tạo tài nguyên mới. Cụ thể, nó được sử dụng để tạo tài nguyên cấp dưới. Đó là, phụ thuộc vào một số tài nguyên (ví dụ: cha mẹ) khác.
Khi tạo thành công, trả về trạng thái HTTP 201, trả về tiêu đề Vị trí có liên kết đến tài nguyên mới được tạo với trạng thái HTTP 201.
Kiểm tra với Fiddler hoặc PostMan: Chúng tôi có thể sử dụng Fiddler để kiểm tra phản hồi. Mở Fiddler và chọn tab Soạn. Chỉ định động từ và url như hiển thị bên dưới và nhấp vào Thực thi để kiểm tra phản hồi.
Động từ: POST
url: http://jsonplaceholder.typicode.com/posts/
Cơ quan yêu cầu:
dữ liệu: {title: 'foo', body: 'bar', userId: 1000, Id: 1000}
Phản hồi: Bạn sẽ nhận được mã phản hồi là 201.
Nếu chúng tôi muốn kiểm tra bản ghi được chèn với Id = 1000, hãy thay đổi động từ thành Nhận và sử dụng cùng một url và nhấp vào Thực thi.
Như đã nói trước đó, url trên chỉ cho phép đọc (GET), chúng tôi không thể đọc dữ liệu cập nhật trong thực tế.
3) PUT:
PUT thường được sử dụng cho các khả năng cập nhật , PUT-ing đến một URI tài nguyên đã biết với phần thân yêu cầu có chứa đại diện mới được cập nhật của tài nguyên ban đầu.
Kiểm tra với Fiddler hoặc PostMan: Chúng tôi có thể sử dụng Fiddler để kiểm tra phản hồi. Mở Fiddler và chọn tab Soạn. Chỉ định động từ và url như hiển thị bên dưới và nhấp vào Thực thi để kiểm tra phản hồi.
Động từ: PUT
url: http://jsonplaceholder.typicode.com/posts/1
Cơ quan yêu cầu:
dữ liệu: {title: 'foo', body: 'bar', userId: 1, Id: 1}
Trả lời: Khi cập nhật thành công, nó trả về 200 (hoặc 204 nếu không trả lại bất kỳ nội dung nào trong phần thân) từ PUT.
4) XÓA:
XÓA là khá dễ hiểu. Nó được sử dụng để xóa tài nguyên được xác định bởi URI.
Khi xóa thành công, trả về trạng thái HTTP 200 (OK) cùng với phần thân phản hồi, có thể là biểu diễn của mục đã xóa (thường yêu cầu quá nhiều băng thông) hoặc phản hồi được bao bọc (xem Giá trị trả về bên dưới). Hoặc là hoặc trả về trạng thái HTTP 204 (KHÔNG CÓ NỘI DUNG) mà không có phần phản hồi. Nói cách khác, trạng thái 204 không có phần thân hoặc phản hồi kiểu JSEND và trạng thái HTTP 200 là các phản hồi được đề xuất.
Kiểm tra với Fiddler hoặc PostMan: Chúng tôi có thể sử dụng Fiddler để kiểm tra phản hồi. Mở Fiddler và chọn tab Soạn. Chỉ định động từ và url như hiển thị bên dưới và nhấp vào Thực thi để kiểm tra phản hồi.
Động từ: XÓA
url: http://jsonplaceholder.typicode.com/posts/1
Trả lời: Khi xóa thành công, nó trả về trạng thái HTTP 200 (OK) cùng với phần thân phản hồi.
Ví dụ giữa PUT và PATCH
ĐẶT
Nếu tôi phải thay đổi tên của mình thì hãy gửi yêu cầu PUT để cập nhật:
{"First": "Nazmul", "last": "hasan"} Vì vậy, ở đây để cập nhật tên đầu tiên, chúng tôi cần gửi lại tất cả các tham số của dữ liệu.
VÁ:
Yêu cầu vá nói rằng chúng tôi sẽ chỉ gửi dữ liệu mà chúng tôi cần sửa đổi mà không sửa đổi hoặc ảnh hưởng đến các phần khác của dữ liệu. Ví dụ: nếu chúng tôi chỉ cần cập nhật tên đầu tiên, chúng tôi chỉ chuyển tên đầu tiên.
Vui lòng tham khảo các liên kết dưới đây để biết thêm thông tin:
https://jsonplaceholder.typicode.com/
https://github.com/typicode/jsonplaceholder#how-to
PUT = thay thế TÀI NGUYÊN ENTIRE bằng đại diện mới được cung cấp
PATCH = thay thế các phần của tài nguyên nguồn bằng các giá trị được cung cấp AND | HOẶC các phần khác của tài nguyên được cập nhật mà bạn chưa cung cấp (dấu thời gian) VÀ | HOẶC cập nhật các tài nguyên ảnh hưởng đến các tài nguyên khác (mối quan hệ)
Định nghĩa dưới đây là từ ví dụ thế giới thực.
Ví dụ Tổng quan
Đối với mỗi dữ liệu khách hàng, chúng tôi đang lưu trữ một mã định danh để tìm dữ liệu khách hàng đó và chúng tôi sẽ gửi lại định danh đó cho khách hàng đó để tham khảo.
BÀI ĐĂNG
ĐẶT
VÁ
Lưu ý: Bật Phương thức Đặt , Chúng tôi sẽ không ném ngoại lệ nếu không tìm thấy số nhận dạng. Nhưng trong phương pháp Patch , chúng tôi sẽ đưa ra một ngoại lệ nếu không tìm thấy định danh.
Hãy cho tôi biết nếu bạn có bất kỳ câu hỏi nào ở trên.
NHẬN / PUT là VÒI bình thường đôi khi có thể là idempotent
Idempotent là gì - Có nghĩa là nếu chúng tôi thực hiện truy vấn nhiều lần thì nó sẽ không ảnh hưởng đến kết quả của nó.
get
: -nhận đơn giản. Lấy dữ liệu từ máy chủ và hiển thị cho người dùng
{
id:1
name:parth
email:x@x.com
}
post
: -tạo tài nguyên mới tại cơ sở dữ liệu. Nó có nghĩa là nó thêm dữ liệu mới. Nó không bình thường.
put
: -Tạo tài nguyên mới nếu không thêm vào hiện có. Idempotent bởi vì nó sẽ cập nhật cùng một tài nguyên mọi lúc và đầu ra sẽ giống nhau. Ví dụ. - dữ liệu ban đầu
{
id:1
name:parth
email:x@x.com
}
{
id:1
email:ppp@ppp.com
}
patch
Vì vậy, bây giờ đến bản vá yêu cầu PATCH đôi khi có thể là idempotent
id:1
name:parth
email:x@x.com
}
tên bản vá: w
{
id:1
name:w
email:x@x.com
}
Phương thức HTTP NHẬN POST không ĐÚNG VÒI không * LỰA CHỌN Đầu có XÓA có
Tài nguyên: Idempotent - Idempotency là gì?
Sự khác biệt chính giữa các yêu cầu PUT và PATCH :
Giả sử chúng ta có một tài nguyên chứa tên và họ của một người.
Nếu chúng tôi muốn thay đổi tên thì chúng tôi sẽ gửi yêu cầu đặt để cập nhật
{ "first": "Michael", "last": "Angelo" }
Ở đây, mặc dù chúng tôi chỉ thay đổi tên đầu tiên, với yêu cầu PUT, chúng tôi phải gửi cả hai tham số đầu tiên và cuối cùng.
Nói cách khác, bắt buộc phải gửi lại tất cả các giá trị, toàn bộ tải trọng.
Tuy nhiên, khi chúng tôi gửi yêu cầu PATCH, chúng tôi chỉ gửi dữ liệu mà chúng tôi muốn cập nhật. Nói cách khác, chúng tôi chỉ gửi tên đầu tiên để cập nhật, không cần gửi tên cuối cùng.
Khá hợp lý sự khác biệt giữa PUT & PATCH wrt gửi dữ liệu đầy đủ và một phần để thay thế / cập nhật tương ứng. Tuy nhiên, chỉ cần một vài điểm như dưới đây
Nghĩ theo cách này...
POST - tạo
PUT - thay thế
VÒI - cập nhật
NHẬN - đọc
XÓA - xóa
Giải thích đơn giản nhất:
POST - Tạo bản ghi MỚI
PUT - Nếu bản ghi tồn tại, cập nhật khác, tạo bản ghi mới
VÒI - cập nhật
NHẬN - đọc
XÓA - xóa