Các phương thức cơ bản của RESTfull lâu lâu hay quên

Table of contents

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

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

Method

  1. GET    Retrieve resources
  2. POST    Create a new resource
  3. PUT    Update a resource
  4. PATCH    Update a resource
  5. 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": "Khá Bảnh",
    "age": 25,
    "skill": "xòe quạt"
}

Sau đó mình bổ sung skill vinahey cho anh Bảnh.

Request: PUT /idol/2

Request payload:

{
    skill: "xòe quạt, vinahey"
}

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

Request: GET /idol/2

Response:

{
    "skill": "xòe quạt, vinahey"
}

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": "Khá Bảnh",
    "age": 25,
    "skill": "xòe quạt"
}

Sau đó mình bổ sung skill vinahey cho anh Bảnh.

Request: PATCH /idol/2

Request payload:

{
    skill: "xòe quạt, vinahey"
}

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

Request: GET /idol/2

Response:

{
    "name": "Khá Bảnh",
    "age": 25,
    "skill": "xòe quạt, vinahey"
}

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ộ.

Add new comment

Plain text

  • No HTML tags allowed.
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.
Image CAPTCHA
Enter the characters shown in the image.