2013-01-06 25 views

Trả lời

16

Lý do chính là khách hàng (và thậm chí một số máy chủ) không lưu trữ vị trí của đại diện với biểu diễn. Ví dụ: nếu bạn wget http://.../foo.json, biểu diễn sẽ được lưu vào đĩa, nhưng URI mà tại đó nó được tìm nạp sẽ không được. Nếu không có "tự" liên kết nhúng trong các đại diện, điều này gây ra hai vấn đề:

  1. liên kết tương đối trong văn bản có thể không còn có một cơ sở dựa vào đó để giải quyết, và do đó sẽ "phá vỡ"; và

  2. Khách hàng sẽ không có khái niệm được nhúng về vị trí, ví dụ: PUT tài liệu quay lại máy chủ nếu họ sửa đổi nó. Một số khách hàng duy trì thông tin này một cách độc lập, nhưng hầu hết thì không.

Điều quan trọng là phải hiểu rằng đại diện có thể có cuộc sống tốt bên ngoài cuộc trò chuyện HTTP và thậm chí có thể được chuyển qua các giao thức khác (e-mail, FTP, trong sách, v.v.). Do đó, một nhà thiết kế kiểu phương tiện có kinh nghiệm thường bao gồm liên kết "tự".

1

Khi tài nguyên được trả lại, nó có thể không phải là biểu diễn đầy đủ. Liên kết self phải cung cấp url để truy cập vào đại diện đầy đủ đó

ví dụ:

GET /objects

[ 
    { 
    "name": "tech", 
    "links": [ 
     "rel": "self", 
     "href": "/objects/1" 
    ] 
    }, 
    { 
    "name": "book", 
    "links": [ 
     "rel": "self", 
     "href": "/objects/2" 
    ] 
    } 
] 

GET /objects/1

{ 
    "name": "tech", 
    "ratio": 1, 
    "precision": 2, 
    "links": [ 
    { 
     "rel": "self", 
     "href": "/objects/1" 
    } 
    ] 
}