2011-07-21 2 views
5

Thực tiễn tốt nhất là sử dụng URI trong JSON (hoặc XML) biểu thị các tài nguyên REST, ví dụ:Biểu diễn JSON của tài nguyên REST có sử dụng URI cho các tài nguyên liên quan không?

Ví dụ cho một tài nguyên có danh sách tệp đính kèm, trong đó mọi tệp đính kèm có id có thể được sử dụng để lấy nó sử dụng một URL như http://myserver.com/resources/attachments/:

{ 
    fileName: "screenshot.png" 
    contentType: "application/octet-stream" 
    id: 52004 
} 

nên tôi cũng thêm một yếu tố uri như

{ 
    fileName: "screenshot.png" 
    contentType: "application/octet-stream" 
    id: 52004 
    uri: /resources/attachments/52004 
} 

Trả lời

8

Có, tôi nghĩ bạn nên bao gồm liên kết tới từng mục trong bộ sưu tập. Một API không phải là RESTful (và quan trọng hơn, không hữu ích) mà không có các liên kết. Nếu bạn nghĩ rằng một khách hàng của con người sẽ có một liên kết hơn là hướng dẫn về cách yêu cầu một mục theo ID, điều tương tự cũng áp dụng cho một khách hàng không phải con người. Bạn cũng nên cung cấp cho khách hàng một số ý tưởng về cách mục liên quan đến tài nguyên hiện tại bằng cách cung cấp một mối quan hệ liên kết:

link : { uri: "/resources/attachments/52004", rel: "/rels/file-attachment" } 

John

+1

Và nếu bạn làm điều đó, thì thành viên "id" hoàn toàn dư thừa. – fumanchu

+0

@fumanchu Điểm tốt –

+0

Thông số "id" không hoàn toàn dư thừa. Có một ID trong phản hồi cho phép người dùng cuối xác định duy nhất tài nguyên đó qua các phép tái cấu trúc API, phiên bản url và có khả năng là bộ lọc cho các cuộc gọi khác tham chiếu đến tài nguyên đó. – trcarden

0

Nếu sẽ là khá vô dụng, vì bạn vẫn sẽ cần phải gửi các thông tin từ các s erver nếu người dùng yêu cầu tài nguyên và bạn sẽ tìm nạp tài nguyên từ id của nó chứ không phải là URI.

Ngoài ra, đôi khi một số tài nguyên không yêu cầu URI khiến chúng không bao giờ được yêu cầu hoặc không thể được yêu cầu trực tiếp.

+0

Từ mục wikipedia trên REST: "Một tài nguyên có thể được về cơ bản bất kỳ chặt chẽ và khái niệm có ý nghĩa có thể được giải quyết. " Trên web, cách xác định tài nguyên là thông qua URI, không phải là ID cơ sở dữ liệu. –