Kaynak ve uç nokta arasındaki fark nedir?


139

Aynı şeyi ifade etmek için hem "kaynak" hem de "son nokta" yı duydum. Kaynak daha yeni bir terim gibi görünüyor.

Onların arasındaki fark ne? "Kaynak" RESTful tasarımı ifade eder mi?

Yanıtlar:


107

DİNLENME

Kaynak , RESTful bir Endpoint alt kümesidir .

Bir uç nokta kendi başına bir servis ulaşılabilir konumdur:

https://www.google.com    # Serves HTML
8.8.8.8                   # Serves DNS
/services/service.asmx    # Serves an ASP.NET Web Service

Bir kaynak , ad boşlukları ile temsil edilen bir veya daha fazla ismin sunulduğu anlamına gelir, çünkü insanların kavraması kolaydır:

/api/users/johnny         # Look up johnny from a users collection.
/v2/books/1234            # Get book with ID 1234 in API v2 schema.

Yukarıdakilerin tümü hizmet son noktaları olarak düşünülebilir, ancak RESTLY konuşarak sadece alt grup kaynaklar olarak kabul edilir. Üst grup, sağladığı içerik konusunda etkileyici değildir.

Bir REST isteği adlardan (kaynaklardan) ve fiillerden (HTTP yöntemleri) oluşan bir cümle gibidir :

  • GET(yöntem) adlı kullanıcı johnny(kaynak).
  • DELETE(yöntem) kimliğine sahip kitap 1234(kaynak).

Sigara DİNLENME

Uç nokta genellikle bir hizmete karşılık gelir, ancak kaynak birçok şey anlamına gelebilir. Aşağıda, kullanıldıkları bağlama bağlı olan bazı kaynak örnekleri verilmiştir.

URL: Tekdüzen "Kaynak" Konumlandırıcı

  • RESTful olabilir, ama çoğu zaman değil. Bu durumda, uç nokta neredeyse eşanlamlıdır.

Kaynak yönetimi

Sözlük

  • Tanımları kelimenin pek çok faydası daha sağlarlar.

Size yardımcı olmak için kullanılabilecek bir şey:

Kütüphane değerli bir kaynaktı ve sık sık onu kullandı.

Kaynaklar, yaşamı desteklemede değerli olan su ve ahşap gibi doğal maddelerdir:

Dünyanın sınırlı kaynakları vardır ve bunları geri dönüştürmezsek onları kullanırız.

Kaynaklar ayrıca ihtiyaç duyduğunuzda kullanabileceğiniz para veya mülkler gibi değerli şeylerdir:

Hükümet, ihtiyaç duyulan öğretmen sayısını işe alacak kaynaklara sahip değil.


Ahlak

Vadeli kaynak tanımı gereği nüans bir yeri vardır. Her şey bağlıdır bağlamda onun kullanılan.


1
Ben de bundan şüphelendim. Bunu açıklayan veya belgeleyen referanslar gördünüz mü?
B Seven

Her terim için bir fikir veren bazı bağlantılar eklendi.
cchamberlain

84

Kaynak ve bitiş noktası terimleri genellikle eşanlamlı olarak kullanılır. Ama aslında aynı anlama gelmiyorlar.

Bitiş noktası terimi , istekte bulunmak için kullanılan URL'ye odaklanır .
Vadeli kaynak odaklanmıştır veri setinin bir istek tarafından döndürülür.

Şimdi, aynı kaynağa genellikle birden fazla farklı uç noktadan erişilebilir .
Ayrıca aynı bitiş noktası , bir sorgu dizesine bağlı olarak farklı kaynaklar döndürebilir .

Bazı örnekleri görelim:

Aynı kaynağa erişen farklı uç noktalar

Aşağıdaki farklı uç nokta örneklerine bir göz atın :

/api/companies/5/employees/3
/api/v2/companies/5/employees/3
/api/employees/3

Belli bir API'da aynı kaynağa erişebilecekleri açıktır .

Ayrıca mevcut bir API tamamen değiştirilebilir. Bu, tamamen yeni ve farklı URL'ler kullanarak aynı eski kaynaklara erişebilecek yeni uç noktalara yol açabilir:

/api/employees/3
/new_api/staff/3

Farklı kaynaklara erişen bir uç nokta

Uç noktanız bir koleksiyon döndürürse, sorgu dizelerini kullanarak arama / filtreleme / sıralama uygulayabilirsiniz. Sonuç olarak, aşağıdaki URL'lerin tümü aynı bitiş noktasını ( /api/companies) kullanır, ancak farklı kaynaklar (veya tanımları kendi başlarına kaynak olan kaynak koleksiyonları) döndürebilirler :

/api/companies
/api/companies?sort=name_asc
/api/companies?location=germany
/api/companies?search=siemens

4
explained🏻
mangonights

1
"Sonuç olarak aşağıdaki URL'lerin tümü aynı bitiş noktasını (/ api / companies) kullanır, ancak farklı kaynaklar döndürebilirler." Demek istediğim hiçbir suç yok ama gerçekten sadece yorumunu burada oluşturuyorsun. REST açısından bunlar sadece farklı kaynakların bulunduğu yerlerdir. URL'nin başka bir parçası olarak hesaplamaya çalıştığınız uç nokta kısmı. Çünkü bir programcısınız ve tek bir işlem yönteminde bir kod parçası olarak nasıl uygulandığını düşünüyorsunuz. Tüm bu farklı URL'lerin aynı sunucudan yönlendirildiğini ve 4 sunucudan sunulduğunu düşünün. Artık bir anlamı yok.
Luke Puplett

1
Sorgu dizelerinin uç noktaların bir parçası olmamasının nedeni, uç noktanın REST dilinin veya URL'nin bir parçası olmamasıdır. Sadece değil. Eğer web uygulaması işleme kodlama açısından düşünüyorsun. REST, sorgu parametreleri veya sıralama ya da herhangi bir şey hakkında hiçbir şeyden bahsetmez. Sadece öyle değil. Bir koleksiyonu ve / siparişleri döndürmek için / orders komutunu kullanırsanız, top = 10, bu oldukça güzel URL'lerdir, koleksiyon için / 32knre32nj bağlantılarını ve ilk on sipariş için / abcd bağlantısını kullanmaktan daha az veya RESTful olmaz. Bunlar sadece kaynak tanımlayıcıları. URL'ler az çok RESTful olamaz ve bir bitiş noktası önemli değildir.
Luke Puplett

Sadece eklemek için, REST'in kritik bir kısmı bağlantıdır, böylece bir tüketici kaynak tanımlayıcılarını önemsememesi gerekir, buradaki Yorum Ekle düğmesinin arkasında ne URL'nin oturduğu umurumda değil. Uç noktalar ve güzel URL'ler üzerinde düşünmeyi bıraktığımızda ve URL'nin tesadüfi olduğu köprüler yerine, etkileşim hedefinde güzel iş akışı tabanlı API'ler tasarlamak çok daha kolay - bir şirket aramak istiyorum, böylece x - API'niz bir yolculuk olmalı aramanın nihai uygulama durumuna akışın ortasında olduğu yerde x'e.
Luke Puplett

"Son nokta" için son derece kanonik bir tanım veya özellik yoktur. Her şey referans olarak kullanıldığı teknolojiye dayanıyor. Durumda, google "Son nokta nedir?" ve konuyla ilgili en çok okunan makalelerden biri bu sayfadır. Burada kullandığımız bağlama göre tanımlarız. Bu yanıttaki tüm örnekler RESTful'tır, ancak uç noktanın kendisi mutlaka RESTful değildir. Bkz. SABUN.
cchamberlain

7

Muhtemelen benimki büyük bir cevap değil ama işte gidiyor.

HTTP üzerinden gerçekten RESTful web hizmetleriyle daha fazla çalıştığımdan beri, net bir tanımı olmadığı için insanları uç nokta terimini kullanmaktan uzak tutmaya çalıştım ve bunun yerine kaynaklar ve kaynak konumları olan REST dilini kullandım.

Bana göre uç nokta bir TCP terimidir. URL'nin bir kısmı bir dinleme sunucusunu tanımladığından HTTP ile sınırlıdır.

Bu yüzden kaynak daha yeni bir terim değil, sanırım, son nokta her zaman kötüye kullanıldı ve başımızı REST'in etrafında bir API stili olarak alırken bunu fark ediyoruz .

Düzenle

Bu konuda blog yazdım.

https://medium.com/@lukepuplett/stop-saying-endpoints-92c19e33e819


1

Göre https://apiblueprint.org/documentation/examples/13-named-endpoints.html bir olan kaynak bir halbuki, örneğin / müşteriler / 30654 / emir - Verilen varlığın depolama "genel" yer uç nokta beton eylemdir (HTTP Yöntemi) 'ni seçin. Yani bir kaynağın birden fazla uç noktası olabilir.


1
Üzgünüm @Dafka, ama yanılıyorsun. Bir uç noktanın üzerinde kullanılan fiil (GET, POST, PUT, DELETE, PATCH gibi HTTP yöntemi) ile ilgisi yoktur.
Jpsy

0

Kullanıcıların, görevlerin ve ödül puanlarının bilgisine sahip bir sunucu düşünün.

  1. Kullanıcılar ve Ödül Puanları kaynaklardır
  2. Bir bitiş noktası birden fazla kaynakla ilgili olabilir
  3. Bitiş noktaları bir açıklama veya tam veya kısmi URL kullanılarak tanımlanabilir

resim açıklamasını buraya girin

Kaynak: API Uç Noktaları ve Kaynaklar


-1

1. Kaynak açıklaması “Kaynaklar”, bir API tarafından döndürülen bilgileri ifade eder.

2. Bitiş noktaları ve yöntemler Bitiş noktaları kaynağa nasıl eriştiğinizi gösterirken, yöntem kaynakla izin verilen etkileşimleri (GET, POST veya DELETE gibi) gösterir.

Ek bilgi: 3. Parametreler Parametreler, yanıtı etkilemek için bitiş noktasıyla (yanıt biçimini veya döndürülen miktarı belirtmek gibi) geçirebileceğiniz seçeneklerdir.

4. İstek örneği İstek örneği, yapılandırılmış bazı parametreleri gösteren uç noktayı kullanan örnek bir istek içerir.

5. Yanıt örneği ve şeması Yanıt örneği , istek örneğinden alınan bir örnek yanıtı gösterir; Yanıt şeması, yanıttaki tüm olası öğeleri tanımlar.

Kaynak- Referans bağlantısı

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.