Tại sao một công ty lại quy định tất cả các giao diện UPDATE đều sử dụng PATCH mà không PUT, POST?
ฝัง
- เผยแพร่เมื่อ 9 ก.พ. 2025
- Tại sao một công ty lại quy định tất cả các giao diện UPDATE đều sử dụng PATCH mà không PUT, POST?
👉 Link khóa học backend Nodejs: / @anonystick
🚩 Subscribe ➜ / tipsjavascript
#nodejs #backend #api
✅ Follow Me:
Blog: anonystick.com
Github: github.com/ano...
Facebook: / tipjs
TH-cam: / tipsjavascript
cái này hoàn toàn k có ảnh hưởng đến việc coding. nó chỉ là quy chuẩn chung để ai cũng có thể đọc được. còn việc PATCH hay PUT hay tất cả những thứ còn lại nó làm gì thì là controller viết. ví dụ trong function get tạo hay update 1 object cũng k vấn đề gì. quy chuẩn này sau một thời gian làm việc mình thấy rất nhiều ng k tuân theo nó. việc update dùng hàm post hay get (do k truyền params lên) là rất bình thường. mọi ng nên học cái này để code cho chuẩn sau đỡ bị chửi. phần PUT hoàn toàn k dùng để create nhé. post là function dùng để create. PUT là thay đổi nhưng ở trnajg thái toàn bộ. thường thì ng ta sẽ dùng PATCH chứ k dùng PUT, kể cả có update toàn bộ cũng vẫn xài PATCH để tránh một số lỗi từ trình biên dịch
Phàn hồi tốt cho team. Tks bro!
Hay quá anh ơi. Càng xem càng cuốn. Anh ơi, em có gặp tình huống sau . Trong dự án em đang làm thì thấy toàn dùng POST để thực hiện CRUD thôi ạ còn GET, PUT, PATCH thì không hề có chỗ nào định nghĩa.
Mong anh giải thích thêm, cũng như có example thì càng tốt ạ.
Cám ơn anh!
Chúc kênh càng ngày phát triển
Chuẩn RESTful API mà bác, sao dùng tất cả dùng POST được, mà thế nó cũng chạy được á, bình thường tạo mới mà dùng GET nó báo lỗi ngay mà :)). Em chỉ thấy mội người hay nhầm giữa PUT và PACTH thôi =))
@@minhkiTong Đấy là vấn đề của hệ thống hiện tại bạn ơi, tất cả đều dùng POST. Cho nên, tùy vào hiện trạng của hệ thống, tùy vào cấp trên nữa bạn ơi.
Cám ơn thầy. Em đang cần kiến thức này
Thanks em!
em đang build project để xin đi thực tập...hên là gặp được thầy học được nhiều kiến thức khi build kiến trúc
Anh cảm ơn em đã ủng hộ Kênh hén,
Cảm ơn anh
Thanks em!
Có cách nào subscribe member mà không phải đi qua google pay k nhỉ ae?
Cảm ơn anh.
Thanks em!
thank Anh
Thanks em!
Em nhớ là nó phải thế này mới đúng chứ nhỉ ? Vì sao lại dùng put để tạo đối tượng mới ạ ?
Create - POST
Read - GET
Update - PUT
Delete - DELETE
hmmm 🤔 mình hiểu là insert sẽ dùng với post, update all thì dùng put, nhưng video thì nói put cho insert data.
Có ae nào giải thích giúp mình đoạn này đc không?
tùy theo requirement của feature nha bạn. Trước tiên là phải làm rõ sự khác biệt giữa POST/PUT
- POST: thao tác dữ liệu với URL được define bởi sever
- PUT: thao tác dữ liệu với URL được define bởi client
Ví dụ cho dễ hiểu thì với tính năng tạo order ở máy POS chẳng hạn, ở đây sẽ chia ra 2 requirement:
- Req 1: POS gửi thông tin order (không bao gồm orderId) lên cho sever với URL có dạng /order và sever sẽ gửi lại status code + orderId - lúc này là dùng POST
- Req 2: tương tự như trên nhưng ở đây máy POS sẽ tự tạo ra orderId rồi gửi lên cho sever với URL có dạng /order/{id} - lúc này là dùng PUT
Thì ở đây có thể thấy là sự khác biệt duy nhất là param ở trên URL, thì lúc này dưới back-end sẽ xử lý như sau:
- Req 1: máy POS gửi bao nhiêu lần request thì sever sẽ tạo bấy nhiêu record với id khác nhau, mặc dù là những thông tin còn lại đều giống nhau - NOTE: kể cả khi URL có dạng /order/{id} thì cũng sẽ tạo ra một id mới
- Req 2: máy POS gửi bao nhiêu lần thì sever cũng chỉ thao tác với record có id giống với id được truyền trong URL. Nếu id đó chưa có thì create, còn nếu có rồi thì update
Nói chung thì nó cũng chỉ là khái niệm để cho FE với BE dễ connect với nhau, tránh sự nhầm lẫn tạo ra lỗi. Đó là ý kiến của mình!
Hi mn!
Mn cho mình hỏi là nếu như vậy thì việc dùng PUT và PATCH đúng chuẩn về cơ bản cũng chỉ là tuân theo lý thuyết thôi đúng không.
Ý mình ở đây là hoàn toàn có thể dùng PUT để update một phần data và cũng hoàn toàn có thể dùng PATCH để update toàn bộ data mà không gây ra bất kỳ lỗi nào đúng chứ?
đúng rùi ạ, bánh vẽ cho hay thôi chứ quan trọng là xử lý data thui. cái qtrong là data chứ ko phải put vs patch
cho em hỏi đăng ký hội viên như thế nào vậy ạ?
Em vào phần mô tả có link or click đây: th-cam.com/channels/ky92hx0lZxVBi2BJ6Zm2Hg.htmljoin
@@anonystick em cảm ơn thầy ạ
Vậy nếu sử dụng PATCH để cập nhật toàn bộ thuộc tính thì ngoài việc nó không đúng về mặt ý nghĩa ra thì nó có khác gì so với PUT không anh ? Chẳng hạn như nếu dùng PATCH cập nhật thì các thuộc tính không thay đổi giá trị so với ban đầu sẽ được PATCH tự động lượt qua chẳng hạn. Em cảm ơn
@@benalpha2297 vậy dùng PUT để cập nhật 1 số thuộc tính vẫn được đúng không ông :v
@@nhatvytruong5551 Được! Nhưng video này đang muốn mọi người hạn chế cách làm như v đó.
@@benalpha2297 thêm cái nữa là status code, đơn giản cứ thành công thì trả 200, ko cần đi chi tiết 201, 204 ...
thực ra tất cả các request đều dùng POST cũng chả sao hết, chỉ là trông nó khó chịu, không tường minh ý nghĩa thôi. Dùng PATCH người ta nhìn vào cái biết ngay chỉ cập nhật một/một vài thuộc tính chứ không phải toàn bộ.
@@TP-kj2sm Đúng vậy. Tùy thuộc vào công ty chứ không phải bắt buộc. Nhưng vì sao lại đặt ra những khái niệm như vậy thì chúng ta cố gằng thực hiện cho đúng bản chất là ok hén.
Em đang code bằng NestJS - Typescript nếu thay vì tạo 2 controllers là PUT vs PATCH. Thì em có thể dùng mỗi PUT với DTO theo dạng optional (?:), liệu nó có thể cải thiện được vấn đề này không ạ ?
Ví dụ :
export interface Student {
full_name?: string;
age?: number;
gender?: string,
}
Không được. nested object nữa?
Tụi github còn xài Post để đăng xuất, trong khi đúng lý phải là Patch 😂😂😂😂
cảm ơn anh
Thanks em!