Điểm của liên kết rel = xông tự sát trong API REST là gì?


11

Tôi thường thấy những điều sau đây trong các tài liệu HTML

<link rel="self" href="http://example.com/something">

hoặc như thế này trong JSON

 link: {
     rel="self",
     href="http://example.com/something"
 }

hoặc bằng XML

 <atom:link rel="self" href="http://example.com/something" />

Vì vậy, tôi đã có một số câu hỏi:

  1. Tại sao bao gồm liên kết này? Nó mang lại lợi thế gì? (Xin vui lòng cho tôi biết có một lý do cho nó và nó không chỉ là một lá bùa "thực hành tốt")
  2. Làm thế nào tôi nên khai thác liên kết này trong khách hàng của tôi? Trường hợp sử dụng cho liên kết này là gì?
  3. Khi nào tôi không nên sử dụng liên kết này? Khi nào nó là vô nghĩa để bao gồm nó?

3
"Nhấp vào đây để đánh dấu trang này" sẽ là trường hợp sử dụng trong đó bạn có thể sử dụng tham chiếu "tự". Tổng quát hơn, vì REST không trạng thái, máy chủ không có cách nào để biết yêu cầu đến từ đâu, do đó, hoàn toàn có thể trang mà nó trả về sẽ cần phải biết URI của chính nó.
Roger

Có vẻ như nhận xét này sẽ đưa ra một câu trả lời khá hay :)
Mike Chamberlain

Câu trả lời:


8

Nó là một tài liệu tham khảo tự, vì vậy khách hàng sẽ biết rằng IRI ( http://example.com/something) là một định danh của tài nguyên mà đại diện nói về.

Nó có thể quan trọng khi tài nguyên của bạn có thể có nhiều định danh, ví dụ http://example.com/users/1http://example.com/users/1?fields="name"có thể xác định cùng một tài nguyên, nhưng một GET trên chúng có thể dẫn đến các biểu diễn khác nhau.

Theo các loại phương tiện như HAL, bạn cũng sử dụng điều này để xác định các tài nguyên được nhúng. Ví dụ:

{
    "nick": "John",
    "_embedded": {
        "cars": {
            "items": [
                //...
            ],
            "_links": {
                "self": {
                    "href": "http://example.com/users/john/cars"
                }
            }
        }
    },
    "_links": {
        "self": {
            "href": "http://example.com/users/john"
        }
    }
}

IRI là gì? Có ai trong số en.wikipedia.org/wiki/IRI không?
Mary Paździoch

@ MarianPaździoch en.wikipedia.org/wiki/I
inf3rno
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.