Apa perlunya Odata ketika saya memiliki JSON?

23

Saya mencoba memahami titik Odata dan kapan itu masuk akal. Saat ini cara saya bekerja adalah saya menggunakan ASP.NET dan MVC / WebApi controller untuk membuat serial / deserialize objek ke dalam JSON dan meminta javascript melakukan sesuatu dengannya.

Dari apa yang saya tahu manfaat dari OData adalah dapat meminta langsung dari URL ... Tapi karena saya menulis kode klien dan server tidak perlu untuk itu.

Adakah yang akan mem-parsing hasil permintaan ODaya di javascript ??

Mungkin OData lebih lanjut tentang menyediakan titik akhir generik untuk SEMUA klien untuk mendapatkan informasi terperinci dari kueri yang tidak disediakan JSON? Jadi jika saya adalah penyedia data maka saya kira itu untuk apa odata?

Bantu saya memahami tujuan dan penggunaan REST / JSON / ODATA.

punkouter
sumber
2
Untuk membuat hal-hal "lebih mudah" Anda mungkin juga tertarik dengan Data Tertaut , Platform Data Tertaut , SPARQL dan Kosakata Katalog Data . Semuanya adalah hal-hal berbeda yang berfungsi untuk tujuan yang berbeda dan yang dapat dikombinasikan dengan JSON , misalnya SPARQL 1.1 Query Results Format JSON , dan tentu saja dengan REST .
Trylks

Jawaban:

42

JSON hanyalah format pertukaran data berdasarkan JavaScript.

REST adalah gaya arsitektur sedangkan OData adalah implementasi khusus dari REST yang dirancang untuk menghasilkan dan menggunakan data, yang mendukung dua format, AtomPub dan JSON.

Jadi perbedaan antara JSON dengan REST polos dan OData adalah opsi dalam OData untuk manipulasi data misalnya, jika kita query data menggunakan protokol OData, kita dapat menentukan opsi di bawah ini di URI,

  • $ orderby
  • $ top
  • $ lewati
  • $ filter
  • $ format
  • $ pilih

Kita dapat melakukan proyeksi, menautkan sumber daya, dll. Dan semua opsi ini tersedia di luar kotak. Sekarang bayangkan jika kita harus menyediakan semua fitur ini di layanan REST kita sendiri maka kita harus,

  • Laksanakan semuanya
  • Buat konvensi / kata kunci kami sendiri untuk operasi yang berbeda

Ini tidak hanya banyak pekerjaan tetapi juga mengarah pada ketidakkonsistenan dan menciptakan kurva pembelajaran bagi konsumen data kami.

Sajad Deyargaroo
sumber
5

Notasi Objek JSON atau JavaScript hanyalah format atau standar untuk data. Ini adalah format yang disepakati untuk mentransmisikan sesuatu seperti nama login ATAU sesuatu yang perlu dikonsumsi oleh Layanan REST.

Lihat bagian ini: http://en.wikipedia.org/wiki/JSON

Meskipun awalnya berasal dari bahasa scripting JavaScript, JSON adalah format data independen-bahasa, dan kode untuk parsing dan menghasilkan data JSON sudah tersedia dalam berbagai macam bahasa pemrograman.

Ini bukan bagian dari bahasa pemrograman tertentu, jadi sistem yang berbeda dapat dengan mudah menyampaikan data, jika mereka tahu mereka menggunakan JSON.

Adapun REST itu hanya gaya arsitektur yang digunakan untuk layanan web.

Lihat bagian ini: http://en.wikipedia.org/wiki/Representational_state_transfer

Salah satu cara untuk memikirkan hal ini, adalah jika Anda ingin menulis layanan web yang dapat digunakan oleh banyak komputer yang berbeda .. dan bertukar informasi. Anda dapat menulis layanan web Anda untuk menerima data melalui URL

 http://www.myservice.com/specialRESTService?name=punkouter

Respons kembali bisa berupa objek JSON yang menandakan data Anda diterima.

{
    "name": "punkouter",
    "status": "service downloaded your data",
}

Saya belum pernah mendengar tentang OData, jadi saya mencarinya di Google:

OData dibangun pada protokol AtomPub dan JSON di mana struktur Atom adalah amplop yang berisi data yang dikembalikan dari setiap permintaan OData. Permintaan OData menggunakan model REST untuk semua permintaan. Setiap perintah REST adalah permintaan POST, GET, PUT, PATCH, atau DELETE http (pemetaan ke CRUD) di mana spesifikasi perintah berada di url.

DAPATKAN: Dapatkan koleksi entitas (sebagai dokumen umpan) atau entitas tunggal (sebagai dokumen entri).

POST: Buat entitas baru dari dokumen entri.

PUT: Perbarui entitas yang ada dengan dokumen entri.

PATCH: Perbarui entitas yang ada dengan dokumen entri parsial.

HAPUS: Hapus entitas.

Kedengarannya seperti OData adalah sesuatu yang ditulis untuk menambah arsitektur gaya REST vanilla .. Tapi sepertinya itu dapat memberi Anda beberapa hal tambahan untuk membuat Anda pergi, daripada harus menulis sesuatu dari awal dalam C # atau bahasa apa pun yang Anda gunakan.

Jika Anda bekerja mendorong Anda untuk menggunakan OData, Anda masih akan menggunakan JSON..tapi dalam kerangka / standar OData yang ditulis oleh Microsoft et al.

Adakah yang pernah mem-parsing hasil query OData (sic) dalam javascript ??

Ya, karena (sepertinya) menggunakan JSON. Sangat wajar untuk menggunakan JS.

Mungkin OData lebih lanjut tentang menyediakan titik akhir generik untuk SEMUA klien untuk mendapatkan informasi terperinci dari kueri yang tidak disediakan JSON? Jadi jika saya adalah penyedia data maka saya kira itu untuk apa Odata?

Odata akan menyediakan layanan REST .. tetapi dengan beberapa layanan standar tambahan di atas titik akhir layanan REST "generik" polos .. klien tidak peduli jika Anda menggunakan OData, atau menggulir layanan C # Anda sendiri .. selama karena responsnya dalam format yang disepakati (seperti JSON). Namun, untuk pekerjaan Anda mungkin mereka ingin menggunakan OData karena menyediakan banyak fitur 'di luar kotak'.

Erik
sumber
Pekerjaan tidak peduli .. Saya hanya ingin tahu untuk apa tujuan Odata ... JSON hanyalah sebuah cara untuk merepresentasikan data .. dan begitu pula ODATA .. tapi .. Saya kira pertanyaan yang saya miliki adalah skenario apa di mana menggunakan REST dan mengembalikan JSON tidak cukup .. dan menggunakan ODATA akan menjadi keuntungan?
punkouter
tidak, tidak, OData adalah arsitektur layanan yang tenang ... yang menggunakan JSON untuk merepresentasikan data. Anda tidak akan mendapatkan apa-apa dengan menggunakan perpustakaan / standar OData .. tidak ada yang secara teknis tidak dapat ditulis sendiri .. tetapi menggunakan OData dapat menghemat waktu Anda jika Anda sedang membangun sesuatu dengannya .. bukan menulis sesuatu sendiri
Erik
json? Tapi menurut saya OData mengembalikan XML ?? Atau keduanya? saya bingung.
punkouter
Dari tautan Anda, "OData mendukung dua format untuk mewakili sumber daya (Koleksi, Entri, Tautan, dll.) Yang ditampilkan: format Atom berbasis XML dan format JSON."
Erik
2

Untuk pertanyaan "mengapa", ada definisi yang sangat bagus dalam buku RESTful Web APIs - pada dasarnya OData mengimplementasikan pola pengumpulan, di mana koleksi adalah sumber daya yang menyediakan daftar sumber daya melalui tautan.

Plesiosaurus
sumber
2

OData adalah implementasi spesifik dari layanan RESTful dengan standar untuk antarmuka. Keuntungannya adalah ketika Anda mengekspos API produk Anda dan mengatakan itu sesuai dengan standar OData, untuk pengguna yang sudah terbiasa dengan OData dapat menggunakannya dengan mudah tanpa menghabiskan banyak waktu untuk membaca dokumentasi API.

Kerugian: Meskipun OData hebat dalam mengekspos database yang mendasarinya, spesifikasi tidak termasuk dukungan untuk transaksi dan tidak dapat digunakan dalam aplikasi di mana kita dapat memiliki layanan yang tenang berfungsi sebagai antarmuka DB maupun antarmuka transaksi.

pengguna3808122
sumber