API RESTful rời rạc như thế nào?


12

Tôi chưa bao giờ xây dựng API RESTful trước đây và tôi tự hỏi nó nên rời rạc như thế nào?

Ví dụ: giả sử tôi có một khách hàng có tên, địa chỉ, số điện thoại, địa chỉ email, ngôn ngữ, v.v.

Liệu có ý nghĩa rằng có một cách để cập nhật từng trường riêng lẻ (cập nhật địa chỉ, cập nhật địa chỉ email, v.v.) hay chỉ nên có một bản cập nhật duy nhất cho toàn bộ khách hàng và mỗi trường là tùy chọn?


3
Bạn muốn phần nào của REST? Nếu bạn chỉ cần một API đơn giản, không phải lo lắng về các tiêu chuẩn, bạn có thể xử lý nó giống như câu trả lời được chấp nhận của thorsten müller. Nếu bạn muốn có một REST thực sự, bạn cần tìm kiếm Roy Fielding (ví dụ + luận văn). Ông là người phát minh ra REST. Bạn sẽ thấy ví dụ rằng ý tưởng rằng tài nguyên == một bảng không phải là sự thật. Bạn cũng sẽ thấy rằng ví dụ cho câu hỏi của bạn, một phương thức HTTP PATCH khá phổ biến để sử dụng để cập nhật một hoặc nhiều trường. Trong đó phương thức POST hoặc PUT (rất nhiều tranh luận ở đây) có thể được sử dụng để cập nhật hoàn chỉnh trên một tài nguyên.
Luc Franken

Câu trả lời:


17

Bạn có một hành động cập nhật cho một tài nguyên. Theo nguyên tắc thông thường, một bảng trong cơ sở dữ liệu của bạn sẽ là một tài nguyên. Vì vậy, trong ví dụ của bạn, có một bộ điều khiển cho Khách hàng với một hành động cập nhật và các trường là tùy chọn càng xa càng tốt.

Có thể có ngoại lệ cho điều này (ví dụ: nếu bạn cập nhật mật khẩu mà bạn mong đợi mật khẩu & mật khẩu xác nhận), nhưng điều này đúng với hầu hết các trường hợp.

Nhiều khả năng các trường hợp ngoại lệ là các bộ điều khiển có hành động giới hạn đối với một số tài nguyên, như SairsContoder chỉ có thể được tạo và hủy. Rất khó có khả năng bạn muốn có hành động cho các trường đơn lẻ.

Trong ví dụ của bạn, một thứ có thể được xử lý như một tài nguyên của chính nó và đó là địa chỉ. Nếu bạn sẽ có một bảng cho các địa chỉ, đặc biệt là nếu có nhiều hơn một địa chỉ cho mỗi khách hàng (thanh toán, giao hàng ...) thì điều này có thể được xử lý như một tài nguyên lồng nhau. Nhưng một lần nữa hành động cập nhật cho toàn bộ tài nguyên địa chỉ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.