Apa gunanya tautan rel = "diri" di REST API?


11

Saya sering melihat yang berikut dalam dokumen HTML

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

atau seperti ini di JSON

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

atau dalam XML

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

Jadi saya punya beberapa pertanyaan:

  1. Mengapa menyertakan tautan ini? Apa manfaatnya? (Tolong beritahu saya ada alasan untuk itu dan itu bukan hanya jimat "praktik yang baik")
  2. Bagaimana cara saya mengeksploitasi tautan ini di klien saya? Apa gunanya case untuk tautan ini?
  3. Kapan saya seharusnya tidak menggunakan tautan ini? Kapan tidak ada gunanya memasukkannya?

3
"Klik di sini untuk menandai halaman ini" akan menjadi kasus penggunaan di mana Anda dapat menggunakan referensi "mandiri". Lebih umum, karena REST tidak memiliki kewarganegaraan, server tidak memiliki cara untuk mengetahui dari mana permintaan itu datang, sehingga sangat mungkin bahwa laman yang dikembalikannya perlu mengetahui URInya sendiri.
Roger

Sepertinya komentar ini akan memberikan jawaban yang cukup bagus :)
Mike Chamberlain

Jawaban:


8

Ini adalah referensi mandiri, sehingga klien akan tahu bahwa IRI ( http://example.com/something) adalah pengidentifikasi sumber daya yang dimiliki representasi.

Ini bisa menjadi penting ketika sumber daya Anda dapat memiliki beberapa pengidentifikasi, misalnya http://example.com/users/1dan http://example.com/users/1?fields="name"dapat mengidentifikasi sumber daya yang sama, tetapi GET pada mereka dapat menghasilkan representasi yang berbeda.

Berdasarkan jenis media seperti HAL Anda menggunakan ini untuk mengidentifikasi sumber daya yang disematkan juga. Sebagai contoh:

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

Apa itu IRI? Adakah dari itu en.wikipedia.org/wiki/IRI ?
Marian Paździoch

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.