2010-09-24 45 views
15

Khi thiết kế một API RESTful nên các tài nguyên phụ thuộc vào các tài nguyên khác được mô hình hóa dưới dạng tiểu uris hoặc chúng chỉ cần tham chiếu lẫn nhau?Mô hình hóa các mối quan hệ tài nguyên với các API RESTful

Ví dụ: giả sử một cánh cửa luôn luôn phụ thuộc vào một ngôi nhà sau đó

/house/73/door/1 

hoặc

/house/73 
/door/1044 

nơi nhà cửa bao gồm tài liệu tham khảo với nhau?

Hầu hết các API RESTful mà tôi đã tìm thấy khá phẳng nên tôi sẽ coi trọng các tham chiếu đến bất kỳ API nào có phụ thuộc quan hệ phức tạp hơn.

Kính trọng

+0

Tôi cũng sẽ đề cập đến ví dụ các URI thú vị không thay đổi. Nói cách khác, không thêm nội dung vào URI không phải là vĩnh viễn. Vì vậy, nếu '73' là khóa chính của bạn trong cơ sở dữ liệu, bạn sẽ không thể hợp nhất các cơ sở dữ liệu dễ dàng ... – mogsie

Trả lời

13

Trong thuật ngữ UML, nếu mối quan hệ là của tập hợp, thì bạn sử dụng phân cấp phẳng với liên kết giữa mọi thứ, trong khi mối quan hệ đó là thành phần (nghĩa là tuổi thọ của door bị ràng buộc bởi tuổi thọ của a house) bạn sử dụng tài nguyên phụ.

Tôi không đề xuất vẽ sơ đồ UML! Nhưng nó giúp đỡ để có trong tâm trí rằng sự phân biệt. (Bạn cũng có thể mô hình hóa trường hợp tổng hợp bằng cách có các tài nguyên phụ chỉ chuyển hướng đến những người thực, chuyển hướng RESTful. OTOH, tôi thực sự không thích làm điều đó; số lượng chuyển hướng xuống.)

13

Chỉ cần nhớ rằng URI là chi tiết triển khai của máy chủ. Nếu bạn có thể mô hình hóa chúng như là tài nguyên bằng phẳng thì hãy làm như vậy. Nó sẽ dễ dàng hơn cho máy chủ để xử lý chúng.

Nếu số nhận dạng cho cửa không phải là duy nhất trên tất cả các ngôi nhà, thì máy chủ của bạn sẽ cần phải biết ngôi nhà và do đó bạn cần đưa ngôi nhà vào URI.

Mối quan hệ giữa các tài nguyên phải được mô hình hóa bởi các liên kết trong các biểu diễn được trả về. tức là đại diện nhà của bạn có thể chứa liên kết đến tất cả các tài nguyên cửa trong ngôi nhà đó. Tôi khuyên bạn nên cố gắng tránh sử dụng cấu trúc URL vì có một số ý nghĩa về miền.

Chỉ sử dụng một hệ thống phân cấp nếu cần thiết để xác định duy nhất tài nguyên.

Các vấn đề liên quan