Perbedaan antara layanan web OData dan REST

196

Sambil melihat ke beberapa layanan web, saya menemukan teknologi "baru" yang oleh Microsoft disebut OData . Membaca deskripsi mereka dalam FAQ tentang apa OData itu, saya mengalami kesulitan membedakan OData dari layanan web REST-ful. Bisakah seseorang tolong saya memahami perbedaannya?

Scott
sumber
2
Satu adalah produsen, yang lain adalah enabler bagi konsumen.
Kangkan

Jawaban:

98

UPDATE Peringatan, jawaban ini sangat ketinggalan zaman sekarang karena OData V4 tersedia.


Saya menulis posting tentang masalah itu beberapa waktu yang lalu di sini .

Seperti yang dikatakan Franci, OData didasarkan pada Atom Pub. Namun, mereka telah melapisi beberapa fungsi di atas dan sayangnya telah mengabaikan beberapa kendala REST dalam proses.

Kemampuan kueri layanan OData mengharuskan Anda membuat URI berdasarkan informasi yang tidak tersedia, atau ditautkan ke dalam respons. Ini adalah apa yang disebut orang REST sebagai informasi out-of-band dan memperkenalkan kopling tersembunyi antara klien dan server.

Kopling lain yang diperkenalkan adalah melalui penggunaan metadata EDMX untuk mendefinisikan properti yang terkandung dalam konten entri. Metadata ini dapat ditemukan pada titik akhir tetap yang disebut $ metadata. Sekali lagi, klien perlu mengetahui hal ini sebelumnya, tidak dapat ditemukan.

Sayangnya, Microsoft tidak ingin membuat jenis media untuk menggambarkan bagian-bagian penting dari data ini, sehingga setiap klien OData harus membuat banyak asumsi tentang layanan yang ia bicarakan dan data yang diterimanya.

Darrel Miller
sumber
1
@felickz Maaf tentang itu. Saya mengalami masalah DNS. Seharusnya berfungsi sekarang. Atau akan ketika cache dns Anda berakhir.
Darrel Miller
6
Sebenarnya ini sudah ketinggalan zaman. V3 dari OData telah menambahkan 'JSON Light' yang membahas kedua masalah ini (yang benar-benar hanya satu), yaitu $ metadata adalah cara Anda tahu untuk membangun kueri, jadi semua yang hilang adalah tautan ke $ metadata dalam representasi sumber daya. Itu telah ditambahkan, sehingga kedua masalah hilang sekaligus.
Alex James
10
@DarrelMiller Anda menyebutkan bahwa jawaban Anda sekarang kedaluwarsa. Ingin menambahkan pembaruan dengan pendapat Anda tentang topik ini? Saya masih tertarik untuk mengetahui perbedaan antara OData 4 dan REST. Terima kasih banyak
Kurren
2
@ Kurren Ini ada dalam daftar tugas, tapi sayangnya ini daftar panjang.
Darrel Miller
2
@DarrelMiller Harap Anda akan menemukan waktu untuk memperbarui posting dalam waktu dekat untuk membuatnya terkini dengan OData V4.
LCJ
64

Protokol OData dibangun di atas protokol AtomPub. Protokol AtomPub adalah salah satu contoh terbaik dari desain REST API. Jadi, dalam arti Anda benar - OData hanyalah API REST dan setiap implementasi OData adalah layanan web REST-ful.

Perbedaannya adalah bahwa OData adalah protokol khusus; REST adalah gaya arsitektur dan pola desain.

Franci Penov
sumber
Saya mungkin salah dalam hal ini (baru mulai belajar tentang odata), tetapi pada versi 3 dari [protokol] [ odata.org/documentation] tampaknya ada juga format JSON yang ditentukan, yang dapat Anda gunakan sebagai alternatif. Bisakah Anda menjelaskan tentang ini?
Johannes Rudolph
1
@JohannesRudolph, jujur ​​saya tidak tahu. Saya belum melihat OData dalam dua tahun terakhir. Tetapi sangat mungkin bahwa Microsoft akan menambahkan dukungan JSON. Catat juga, bahwa ini tidak mengubah respons apa pun di sini. JSON vs XML hanyalah masalah presentasi sumber daya REST.
Franci Penov
1
Anda dapat menentukan dalam format apa permintaan yang Anda inginkan. XML dan JSON harus didukung oleh sebagian besar implementasi dengan mis.
Mengatur
32

REST adalah teknik desain generik yang digunakan untuk menggambarkan bagaimana layanan web dapat diakses. Menggunakan REST Anda dapat membuat permintaan http untuk mendapatkan data. Jika Anda mencobanya di browser Anda, itu akan seperti pergi ke situs web kecuali alih-alih mengembalikan halaman web Anda akan mendapatkan kembali XML. Beberapa layanan juga akan mengembalikan data dalam format JSON yang lebih mudah digunakan dengan Javascript.

OData adalah teknologi khusus yang mengekspos data melalui REST.

Jika Anda ingin menjumlahkannya dengan cepat, anggap sebagai:

  • REST - pola desain
  • OData - teknologi yang memungkinkan
Rush Frisby
sumber
20

Pada 2012 OData menjalani standarisasi, jadi saya hanya akan menambahkan pembaruan di sini ..

Pertama definisi:

REST - adalah arsitektur cara mengirim pesan melalui HTTP.

OData V4 - adalah implementasi spesifik REST, benar-benar mendefinisikan konten pesan dalam format yang berbeda (saat ini saya pikir adalah AtomPub dan JSON). ODataV4 mengikuti prinsip istirahat.

Sebagai contoh, orang-orang asp.net sebagian besar akan menggunakan pengontrol WebApi untuk membuat serial / deserialize objek ke dalam JSON dan meminta javascript melakukan sesuatu dengannya. Titik Odata adalah dapat melakukan kueri langsung dari URL dengan opsi out-of-the-box.

tatigo
sumber
10

Dari dokumentasi OData :

OData Protocol adalah protokol tingkat aplikasi untuk berinteraksi dengan data melalui layanan web RESTful.

...

Protokol OData berbeda dari pendekatan layanan web berbasis REST lainnya karena menyediakan cara yang seragam untuk menggambarkan data dan model data.

mcanti
sumber
4

OData (Open Data Protocol) adalah standar OASIS yang menetapkan praktik terbaik untuk membangun dan mengonsumsi API RESTful. OData membantu Anda fokus pada logika bisnis sambil membuat API yang tenang tanpa harus khawatir tentang pendekatan untuk menentukan header permintaan dan respons, kode status, metode HTTP, konvensi URL, jenis media, format muatan, dan opsi permintaan, dll. OData juga memandu Anda tentang melacak perubahan, menentukan fungsi / tindakan untuk prosedur yang dapat digunakan kembali dan mengirim permintaan tidak sinkron / batch dll. Selain itu, OData menyediakan fasilitas untuk ekstensi untuk memenuhi segala kebutuhan kustom API RESTful Anda.

OData RESTful APIs mudah dikonsumsi. Metadata OData, deskripsi model data API yang dapat dibaca mesin, memungkinkan pembuatan proxy dan perangkat klien generik yang kuat. Beberapa dari mereka dapat membantu Anda berinteraksi dengan OData bahkan tanpa mengetahui apa pun tentang protokol tersebut. 6 langkah berikut menunjukkan 6 skenario menarik konsumsi OData di berbagai platform pemrograman. Tetapi jika Anda bukan pengembang dan hanya ingin bermain dengan OData, XOData adalah awal terbaik untuk Anda.

untuk lebih jelasnya di http://www.odata.org/

RajeshVerma
sumber
4

ODATA adalah jenis khusus REST di mana kami dapat meminta data secara seragam dari URL.

Minh Nguyen
sumber
2

REST adalah singkatan dari RE presentational S tate T ransfer yang merupakan gaya arsitektur berbasis sumber daya. Berbasis sumber daya berarti bahwa data dan fungsionalitas dianggap sebagai sumber daya.

OData adalah protokol berbasis web yang menetapkan serangkaian praktik terbaik untuk membangun dan mengonsumsi layanan web RESTful. OData adalah cara untuk membuat layanan web RESTful sehingga implementasi dari REST.

Ishara
sumber