Bir REST API'sindeki rel = “self” bağlantısının anlamı nedir?


11

HTML belgelerinde sık sık aşağıdakileri görüyorum

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

ya da JSON'da böyle

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

veya XML biçiminde

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

Bazı sorularım vardı:

  1. Neden bu bağlantıyı eklemelisiniz? Ne avantaj sağlıyor? (Lütfen bana bunun bir nedeni olduğunu söyle ve bu sadece "iyi uygulama" tılsımı değil)
  2. Bu bağlantıyı müşterilerimde nasıl kullanmalıyım? Bu bağlantı için kullanım durumu nedir?
  3. Ne zaman olmamalıdır bu linki kullanınız? Ne zaman dahil etmek anlamsızdır?

3
"Bu sayfaya yer işareti koymak için burayı tıklayın", "ben" referansını kullanabileceğiniz bir kullanım durumudur. Daha genel olarak, REST vatansız olduğundan, sunucunun isteğin nereden geldiğini bilmesinin bir yolu yoktur, bu nedenle geri döndüğü sayfanın kendi URI'sini bilmesi tamamen mümkündür.
Roger

Bu yorum oldukça iyi bir cevap verecek gibi görünüyor :)
Mike Chamberlain

Yanıtlar:


8

Bu bir öz referanstır, bu nedenle istemci IRI ( http://example.com/something) öğesinin temsilin ilgili kaynağının bir tanımlayıcısı olduğunu bilecektir .

Senin kaynak örneğin birden tanımlayıcıları sahip olabilir zaman önemli olabilir http://example.com/users/1ve http://example.com/users/1?fields="name"aynı kaynağın tanımlayabilir, ancak onlara bir GET farklı temsillerini neden olabilir.

HAL gibi medya türlerine göre, bunu gömülü kaynakları tanımlamak için kullanırsınız. Örneğin:

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

IRI nedir? Bunlardan herhangi biri en.wikipedia.org/wiki/IRI ?
Marian Paździoch

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.