+8

[API Testing] Phân biệt PUT và PATCH - Chưa chắc đã giống đâu

Hai phương thức PUT và PATCH là hai phương thức HTTP được sử dụng để cập nhật tài nguyên trên máy chủ web.

Lời đầu tiên mình xin chào mọi người, chúc mọi người có một ngày học tập và làm việc vui vẻ. Bài viết này mình sẽ đề cập đến sự khác nhau giữa PUT và PATCH. Mình cùng vào nội dung chính nhé !

1. PUT

  • PUT (Replace): Phương thức PUT được sử dụng để thay thế hoàn toàn nội dung của tài nguyên bằng nội dung mới
  • Nếu tài nguyên đã tồn tại, PUT sẽ gửi yêu cầu cập nhật nội dung mới hoàn toàn. Nếu tài nguyên chưa tồn tại, PUT sẽ tạo tài nguyên mới với nội dung mới.
  • Điều quan trọng cần lưu ý là khi sử dụng PUT, bạn cần gửi toàn bộ nội dung của tài nguyên, không chỉ gửi các trường cần thay đổi.

Ví dụ: Mình sử dụng phương thức GET để lấy ra record như sau:

Request: GET/monhoc/stt=2 (Đây là mình viết ví dụ câu request thôi đó nha ^-^)

Response:

{
    "subject": "Lập trình cơ bản",
    "lecturer": "Nguyễn Văn A",
    "credits": 4
}

Sau đó mình sử dụng phương thức PUT để bổ sung thêm tên giảng viên

Request: PUT/monhoc/stt=2

Response:

"lecturer": "Nguyễn Văn A, Trần Thị B"

Sau đó mình sử dụng phương thức GET để kiểm tra lại record

Và kết quả là:

"lecturer": "Nguyễn Văn A, Trần Thị B"

👉️Hình như mất tiu subject với credit rồi, có chuyên gì xảy ra vậy

Nhớ lưu ý nha: Điều quan trọng cần lưu ý là khi sử dụng PUT, bạn cần gửi toàn bộ nội dung của tài nguyên, không chỉ gửi các trường cần thay đổi. PUT sẽ cập nhật lại toàn bộ theo yêu cầu mới của bạn

2. PATCH

  • PATCH (Partial Update): Phương thức PATCH được sử dụng để cập nhật một phần nội dung của tài nguyên.
  • Khi sử dụng PATCH, bạn chỉ cần gửi dữ liệu mới cho các trường cần thay đổi trong tài nguyên.
  • Các trường không được gửi sẽ không bị thay đổi hoặc bị xóa trong tài nguyên.
  • Điều này làm cho PATCH trở nên hữu ích khi bạn muốn chỉ cập nhật một phần nhỏ của tài nguyên mà không cần gửi lại toàn bộ nội dung.

Ví dụ: Mình sử dụng phương thức GET để lấy ra record như sau:

Request: GET/monhoc/stt=2 (Đây là mình viết ví dụ câu request thôi đó nha ^-^)

Response:

{
    "subject": "Lập trình cơ bản",
    "lecturer": "Nguyễn Văn A",
    "credits": 4
}

Sau đó mình sử dụng phương thức PATCH để bổ sung thêm tên giảng viên

Request: PATCH/monhoc/stt=2

Response:

"lecturer": "Nguyễn Văn A, Trần Thị B"

Sau đó mình sử dụng phương thức GET để kiểm tra lại record

Và kết quả là:

{
   "subject": "Lập trình cơ bản",
   "lecturer": "Nguyễn Văn A, Trần Thị B",
   "credits": 4
}

👉️ Chúng ta thấy răng các field không yêu cầu cập nhật vẫn còn, nó không bị mất đi như phương thức PUT

Nhớ lưu ý nha: Phương thức PATCH được sử dụng để cập nhật một phần nội dung của tài nguyên mà bạn yêu cầu muốn bổ sung hoặc thay đổi. Các field không yêu cầu thay đổi hoặc bổ sung vẫn tồn tại sau khi sử dụng PATCH

3. Nếu tôi muốn tạo field mới trong record thì tôi nên sử dụng phương thức nào ?

image.png

🗯️Hãy giúp Sizuka trả lời câu hỏi đi nào. Let's go !

Sizuka dùng PUT

Sizuka dùng phương thức PUT để thêm "Phòng học"

Request: PUT/monhoc/stt=2

Response:

{
    "subject": "Lập trình cơ bản",
    "lecturer": "Nguyễn Văn A",
    "credits": 4,
    "room": "RD102"
}

Sau đó Sizuka sử dụng phương thức GET để kiểm tra lại record

Và kết quả là:

{
    "subject": "Lập trình cơ bản",
    "lecturer": "Nguyễn Văn A",
    "credits": 4,
    "room": "RD102"
}

⚡️⚡️⚡️ Vậy field đã được thêm vào, đúng như ý Sizuka mong muốn

👉️ Lưu ý rằng: Nếu tài nguyên chưa tồn tại, PUT sẽ tạo tài nguyên mới với nội dung mới.

Sizuka dùng PATCH

Sizuka dùng phương thức PATCH để thêm "Phòng học"

Request: PATCH/monhoc/stt=2

Response:

{
    "subject": "Lập trình cơ bản",
    "lecturer": "Nguyễn Văn A",
    "credits": 4,
    "room": "RD102"
}

Sau đó Sizuka sử dụng phương thức GET để kiểm tra lại record

Và kết quả là:

{
    "subject": "Lập trình cơ bản",
    "lecturer": "Nguyễn Văn A",
    "credits": 4,
}

⚡️⚡️⚡️ Vậy field mới không được thêm vào, Sizuka đã có lựa chọn cho cuộc đời mình

👉️ Lưu ý rằng: Nếu tài nguyên chưa tồn tại, PATCH sẽ không tạo tài nguyên mới với nội dung mới. Vì vậy nếu muốn thêm field mới ta cần sử dụng phương thức PUT.

3. Tổng kết

  • Tóm lại, PUT và PATCH đều là phương thức được sử dụng để cập nhật thông tin trên một tài nguyên trên máy chủ. PUT thay thế toàn bộ nội dung của tài nguyên, trong khi PATCH chỉ cập nhật một phần thông tin.
  • Cần chú ý rằng việc sử dụng PUT và PATCH phụ thuộc vào tính năng hỗ trợ của máy chủ và nên tuân theo các tiêu chuẩn và hướng dẫn của RESTful API.

✏️ Ps: Mình sẽ update thêm video nói về về hai phương thức PUT và PATCH sử dụng Postman

Lời cuối mình xin cảm ơn mọi người đã đọc bài viết !


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí