Apa perbedaan antara sumber daya dan titik akhir?

139

Saya telah mendengar "sumber daya" dan "titik akhir" untuk merujuk pada hal yang sama. Tampaknya sumber daya adalah istilah yang lebih baru.

Apa perbedaan di antara mereka? Apakah "sumber daya" menyiratkan desain RESTful?

B Tujuh
sumber

Jawaban:

107

BERISTIRAHAT

Sumberdaya adalah subset RESTful dari Endpoint .

Sebuah endpoint dengan sendirinya adalah lokasi di mana layanan dapat diakses:

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

Sebuah sumber daya mengacu pada satu atau lebih kata benda dilayani, diwakili dalam mode namespaced, karena mudah bagi manusia untuk memahami:

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

Semua hal di atas dapat dianggap sebagai titik akhir layanan, tetapi hanya grup terbawah yang akan dianggap sebagai sumber daya, yang dengan tenang. Grup teratas tidak ekspresif mengenai konten yang disediakannya.

Permintaan REST seperti kalimat yang terdiri dari kata benda (sumber daya) dan kata kerja (metode HTTP):

  • GET(metode) nama pengguna johnny(sumber daya).
  • DELETE(metode) buku dengan id 1234(sumber daya).

Non-REST

Endpoint biasanya mengacu pada layanan, tetapi sumber daya dapat berarti banyak hal. Berikut adalah beberapa contoh sumber daya yang bergantung pada konteks tempat mereka digunakan.

URL: Pencari "Sumber Daya" Seragam

  • Bisa tenang, tapi sering kali tidak. Dalam hal ini, titik akhir hampir identik.

Pengelolaan sumber daya

Kamus

  • The definisi menyediakan lebih banyak menggunakan kata.

Sesuatu yang dapat digunakan untuk membantu Anda:

Perpustakaan adalah sumber daya yang berharga, dan ia sering memanfaatkannya.

Sumber daya adalah zat alami seperti air dan kayu yang berharga dalam mendukung kehidupan:

[pl] Bumi memiliki sumber daya yang terbatas, dan jika kita tidak mendaur ulangnya, kita menggunakannya.

Sumber daya juga merupakan hal yang bernilai seperti uang atau barang yang dapat Anda gunakan saat Anda membutuhkannya:

[pl] Pemerintah tidak memiliki sumber daya untuk merekrut jumlah guru yang dibutuhkan.


Moral

Sumber daya istilah dengan definisi memiliki banyak nuansa. Itu semua tergantung pada konteks yang digunakan di.

cchamberlain
sumber
1
Saya menduga hal yang sama. Pernahkah Anda melihat referensi yang menjelaskan atau mendokumentasikan ini?
B Seven
Menambahkan beberapa tautan yang memberikan nuansa untuk setiap istilah.
cchamberlain
84

Sumber daya istilah dan titik akhir sering digunakan secara sinonim. Namun sebenarnya mereka tidak bermaksud hal yang sama.

Istilah titik akhir difokuskan pada URL yang digunakan untuk membuat permintaan.
Sumber daya istilah difokuskan pada kumpulan data yang dikembalikan oleh permintaan.

Sekarang, sumber daya yang sama sering dapat diakses oleh beberapa titik akhir yang berbeda .
Juga titik akhir yang sama dapat mengembalikan sumber daya yang berbeda , tergantung pada string kueri.

Mari kita lihat beberapa contoh:

Titik akhir yang berbeda mengakses sumber daya yang sama

Lihat contoh-contoh titik akhir yang berbeda berikut :

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

Mereka jelas bisa mengakses sumber daya yang sama di API yang diberikan.

Juga API yang ada dapat diubah sepenuhnya. Ini dapat mengarah ke titik akhir baru yang akan mengakses sumber daya lama yang sama menggunakan URL yang sama sekali baru dan berbeda:

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

Satu titik akhir mengakses sumber daya yang berbeda

Jika titik akhir Anda mengembalikan koleksi, Anda bisa menerapkan pencarian / pemfilteran / penyortiran menggunakan string kueri. Sebagai hasilnya, URL berikut semuanya menggunakan titik akhir yang sama ( /api/companies), tetapi mereka dapat mengembalikan sumber daya yang berbeda (atau koleksi sumber daya , yang menurut definisi adalah sumber daya itu sendiri):

/api/companies
/api/companies?sort=name_asc
/api/companies?location=germany
/api/companies?search=siemens
Jpsy
sumber
4
menjelaskan dengan baik 👍🏻
mangonights
1
"Sebagai hasilnya, URL berikut semuanya menggunakan titik akhir yang sama (/ api / perusahaan), tetapi mereka dapat mengembalikan sumber daya yang berbeda." Maksud saya jangan tersinggung tetapi Anda benar-benar hanya membuat interpretasi Anda di sini. Dalam hal REST, ini hanya lokasi sumber daya yang berbeda. Bagian titik akhir yang Anda coba pertanggungjawabkan sebagai bagian lain dari URL. Itu karena Anda seorang programmer dan Anda berpikir bagaimana penerapannya, sebagai bagian dari kode pada metode aksi tunggal. Bayangkan bahwa semua URL yang berbeda ini diarahkan dan dilayani dari 4 server apakah semuanya merupakan titik akhir yang sama? Tidak masuk akal sekarang.
Luke Puplett
1
Alasan string kueri bukan bagian dari titik akhir adalah karena titik akhir bukan bagian dari bahasa REST atau URL. Itu tidak benar. Anda sedang berpikir dalam hal pengkodean aplikasi web penanganan. REST tidak menyebutkan apa-apa tentang params query atau penyortiran atau apa pun. Hanya saja tidak. Jika Anda menggunakan / pesanan untuk mengembalikan koleksi dan / pesanan? Top = 10 itu hanya URL yang cantik, tidak lebih atau kurang tenang daripada menggunakan tautan ke / 32knre32nj untuk koleksi dan tautan ke / abcd untuk sepuluh pesanan teratas. Mereka hanya pengidentifikasi sumber daya. URL tidak bisa lebih atau kurang TETAP dan titik akhir bukan apa-apa.
Luke Puplett
Sebagai tambahan, bagian penting dari REST adalah penghubungnya, sehingga konsumen tidak perlu peduli dengan pengidentifikasi sumber daya, saya sangat tidak peduli dengan apa URL berada di belakang tombol Tambah Komentar di sini. Ketika kami berhenti memikirkan titik akhir dan URL yang cantik dan alih-alih ke hyperlink di mana URL itu insidental, jauh lebih mudah untuk merancang API berbasis alur kerja yang bagus pada tujuan interaksi - saya ingin mencari perusahaan sehingga x - API Anda harus menjadi perjalanan ke x di mana pencarian berada di tengah aliran ke status aplikasi akhirnya.
Luke Puplett
Tidak ada definisi atau spek yang sangat kanonik untuk "titik akhir". Semuanya bermuara pada teknologi yang digunakan dalam referensi. Contohnya, google "Apa itu endpoint?" dan salah satu artikel teratas tentang masalah ini adalah halaman ini. Kami mendefinisikannya di sini berdasarkan konteks yang kami lihat digunakan sebelumnya. Semua contoh dalam jawaban ini adalah TETAP, meskipun endpoint itu sendiri belum tentu TETAP. Lihat SABUN.
cchamberlain
7

Mungkin jawaban saya bukan jawaban yang bagus tapi ini dia.

Karena bekerja lebih banyak dengan layanan web yang benar-benar tenang melalui HTTP, saya telah mencoba untuk menjauhkan orang dari menggunakan istilah titik akhir karena tidak memiliki definisi yang jelas, dan alih-alih menggunakan bahasa REST yang merupakan sumber daya dan lokasi sumber daya.

Menurut saya, endpoint adalah istilah TCP. Itu digabungkan dengan HTTP karena bagian dari URL mengidentifikasi server mendengarkan.

Jadi sumber daya bukanlah istilah yang lebih baru, saya tidak berpikir, saya pikir titik akhir selalu disalahgunakan dan kami menyadari bahwa saat kami mengarahkan REST sebagai gaya API.

Edit

Saya membuat blog tentang ini.

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

Luke Puplett
sumber
1

Menurut https://apiblueprint.org/documentation/examples/13-named-endpoints.html adalah sumber daya tempat penyimpanan "umum" dari entitas yang diberikan - misalnya / pelanggan / 30654 / pesanan, sedangkan titik akhir adalah tindakan nyata (Metode HTTP) di atas sumber daya yang diberikan. Jadi satu sumber daya dapat memiliki banyak titik akhir.

Dafka
sumber
1
Maaf @ Dafka, tetapi Anda salah. Endpoint tidak ada hubungannya dengan kata kerja (metode HTTP seperti GET, POST, PUT, DELETE, PATCH) yang sedang digunakan di sana.
Jpsy
0

Pertimbangkan server yang memiliki informasi pengguna, misi, dan poin hadiah mereka.

  1. Pengguna dan Poin Hadiah adalah sumber daya
  2. Titik akhir dapat berhubungan dengan lebih dari satu sumber daya
  3. Titik akhir dapat dideskripsikan menggunakan deskripsi atau URL lengkap atau sebagian

masukkan deskripsi gambar di sini

Sumber: Titik Akhir API vs Sumber Daya

srinivas chaitanya
sumber
-1

1. Deskripsi sumber daya “Sumberdaya” mengacu pada informasi yang dikembalikan oleh API.

2. Titik akhir dan metode Titik akhir menunjukkan bagaimana Anda mengakses sumber daya, sementara metode menunjukkan interaksi yang diizinkan (seperti GET, POST, atau HAPUS) dengan sumber daya.

Info tambahan: 3. Parameter Parameter adalah opsi yang dapat Anda berikan dengan titik akhir (seperti menentukan format respons atau jumlah yang dikembalikan) untuk memengaruhi respons.

4. Contoh permintaan Contoh permintaan termasuk permintaan sampel menggunakan titik akhir, menunjukkan beberapa parameter yang dikonfigurasi.

5. Contoh dan skema respons Contoh respons menunjukkan contoh sampel dari contoh permintaan; skema respons mendefinisikan semua elemen yang mungkin dalam respons.

Sumber- Link Referensi

Manthan_Admane
sumber