Quay lại
PUT vs PATCH

RESTful APIs enable you to develop any kind of web application having all possible CRUD (create, retrieve, update, delete) operations

https://restfulapi.net

RESTfull có các phương thức cơ bản sau:

Method Semantics
GET Retrieve resources
POST Create a new resource
PUT Update a resource
PATCH Update a resource
DELETE Delete a resource

Ngoài ra còn có HEAD, OPTIONS nhưng hầu như không sử dụng nhiều.

Ở đây ta để ý thấy PUT vs PATCH đều có ý nghĩa là sử dụng để “Update a resource”. Vậy PUT và PATCH có gì khác nhau?

PUT

Theo HTTP RFC, khi sử dụng PUT để update, ta phải gửi 1 bản ghi đầy đủ các field để yêu cầu cập nhật. Nếu chỉ gửi 1 số field nhất định thì những field còn lại sẽ bị xóa (tức bị null)

VD:

Mình có record như sau:

Request: GET /idol/2

Response:

{
    "name": "Son Tùng",
    "age": 25,
    "skill": "Nhảy"
}

Sau đó mình bổ sung skill "Hát" cho anh Sơn Tùng.

Request: PUT /idol/2

Request payload:

{
    skill: "Nhảy, Hát"
}

Bây giờ mình kiểm tra lại xem thông tin a Sơn Tùng đã được cập nhật chưa.

Request: GET /idol/2

Response:

{
    "skill": "Nhảy, Hát"
}

Dường như có vẻ được cập nhật rồi. Ơ mà khoan có gì đó sai sai, field name và age đâu?

Thì ra đó là cách làm việc của PUT.

PATCH

Theo HTTP RFC, PATCH giống PUT về ý nghĩa nhưng khác nhau về cách làm việc, nó chỉ thay đổi những field được yêu cầu thay vì thay đổi toàn bộ record.

Áp dụng lại VD trên:

Mình có record như sau:

Request: GET /idol/2

Response:

{
    "name": "Sơn Tùng",
    "age": 25,
    "skill": "Nhảy"
}

Sau đó mình bổ sung skill "Hát" cho anh Sơn Tùng.

Request: PATCH /idol/2

Request payload:

{
    skill: "Nhảy, Hát"
}

Bây giờ mình kiểm tra lại xem thông tin a Sơn Tùng đã được cập nhật chưa.

Request: GET /idol/2

Response:

{
    "name": "Sơn Tùng",
    "age": 25,
    "skill": "Nhảy, Hát"
}

Hoàn hảo, PATCH chỉ cập nhật những field được yêu cầu thay vì cập nhật toàn bộ.

 

Bình luận (0)

Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough

Bài viết liên quan

Learning English Everyday