Skip to main content
x

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

Restricted HTML

  • You can align images (data-align="center"), but also videos, blockquotes, and so on.
  • You can caption images (data-caption="Text"), but also videos, blockquotes, and so on.
  • You can use shortcode for block builder module. You can visit admin/structure/gavias_blockbuilder and get shortcode, sample [gbb name="page_home_1"].
  • You can use shortcode for block builder module. You can visit admin/structure/gavias_blockbuilder and get shortcode, sample [gbb name="page_home_1"].
CAPTCHA This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.